如何在R的data.table物件中刪除重複的列名?


在資料分析中,我們有時會處理重複資料或名稱相同的資料表示。這種情況之一是data.table物件中的兩列列名相同。為此,我們可以結合使用which函式和duplicated函式,並將重複項的輸出設定為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

更新於:2021年2月5日

343 次瀏覽

開啟你的職業生涯

透過完成課程獲得認證

開始學習
廣告
© . All rights reserved.