如何删除R中data.table对象中重复的列名?

阅读 1304 收藏 0 点赞 0 评论 0

在数据分析中,我们有时会处理重复数据或仅处理同名数据的表示。一种这样的情况是data.table对象中两列的列名相同。为此,我们可以使用 which 函数与重复函数的组合,并将该重复的输出设置为 NULL 以删除重复的列名。

示例 1

加载data.table包并创建一个data.table对象 -

library(data.table)
x1<−rnorm(20)
DT1<−data.table(x1,x1)
DT1
输出结果
      x1          x1
1: −1.65034927 −1.65034927
2: −1.95441645 −1.95441645
3: 2.03530252 2.03530252
4: −2.07789754 −2.07789754
5: −1.31558491 −1.31558491
6: 0.69256432 0.69256432
7: 1.83924420 1.83924420
8: −1.59751233 −1.59751233
9: −0.12015454 −0.12015454
10: 0.46507856 0.46507856
11: 1.00867249 1.00867249
12: 1.76181383 1.76181383
13: 0.35151845 0.35151845
14: −0.29470885 −0.29470885
15: −0.01617467 −0.01617467
16: 1.28775955 1.28775955
17: −1.80266832 −1.80266832
18: −0.70682196 −0.70682196
19: −2.07815278 −2.07815278
20: 0.43574626 0.43574626

从 DT1 中删除一个 x1 -

DT1[,which(duplicated(names(DT1))):=NULL]
DT1
输出结果
      x1
1: −1.65034927
2: −1.95441645
3: 2.03530252
4: −2.07789754
5: −1.31558491
6: 0.69256432
7: 1.83924420
8: −1.59751233
9: −0.12015454
10: 0.46507856
11: 1.00867249
12: 1.76181383
13: 0.35151845
14: −0.29470885
15: −0.01617467
16: 1.28775955
17: −1.80266832
18: −0.70682196
19: −2.07815278
20: 0.43574626

例2

y1<−rpois(20,5)
DT2<−data.table(y1,y1)
DT2
输出结果
 y1 y1
1: 6 6
2: 5 5
3: 7 7
4: 5 5
5: 2 2
6: 3 3
7: 6 6
8: 5 5
9: 5 5
10: 3 3
11: 3 3
12: 4 4
13: 3 3
14: 6 6
15: 4 4
16: 5 5
17: 4 4
18: 3 3
19: 1 1
20: 2 2

从 DT2 中删除一个 y1 -

DT2[,which(duplicated(names(DT2))):=NULL]
DT2
输出结果
  y1
1: 6
2: 5
3: 7
4: 5
5: 2
6: 3
7: 6
8: 5
9: 5
10: 3
11: 3
12: 4
13: 3
14: 6
15: 4
16: 5
17: 4
18: 3
19: 1
20: 2

评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号