如何在R中根據data.table物件的列型別選擇列?


要根據R中data.table物件的列型別選擇列,我們可以按照以下步驟操作:

  • 首先,建立一個data.table物件。

  • 然後,使用str函式檢查物件的結構。

  • 之後,使用dplyr包中的select_if函式根據列型別選擇列。

示例1

建立data.table物件

讓我們建立一個如下所示的data.table物件:

library(data.table)
x1<-sample(LETTERS[1:4],25,replace=TRUE)
x2<-rnorm(25)
x3<-rpois(25,5)
DT1<-data.table(x1,x2,x3)
DT1

輸出

執行上述指令碼後,會生成以下輸出(由於隨機化,此輸出可能因系統而異):

    x1    x2     x3
1:  D -1.03911797 6
2:  C -0.18664587 3
3:  D -1.36429362 3
4:  A -2.26587126 8
5:  B  0.10786571 3
6:  C  0.01271455 4
7:  D  1.33889909 8
8:  C  2.24053400 9
9:  B  1.45987567 9
10: B  0.16747607 7
11: C -0.39258915 3
12: A  0.22643666 7
13: A -0.19909780 7
14: D -1.37518544 7
15: D -1.47161101 4
16: C  0.95574993 7
17: B  0.86833240 5
18: A  0.24516224 5
19: C -1.25342994 6
20: A  1.46559041 2
21: C  0.34863015 2
22: D -0.33877737 5
23: B  0.26071352 4
24: D -0.61747246 4
25: A -0.35990471 7
   x1    x2       x3

檢查data.table物件的結構

使用str函式檢查data.table物件DT1的結構:

library(data.table)
x1<-sample(LETTERS[1:4],25,replace=TRUE)
x2<-rnorm(25)
x3<-rpois(25,5)
DT1<-data.table(x1,x2,x3)
str(DT1)

輸出

Classes ‘data.table’ and 'data.frame': 25 obs. of 3 variables:
$ x1: chr "D" "C" "D" "A" ...
$ x2: num -1.039 -0.187 -1.364 -2.266 0.108 ...
$ x3: int 6 3 3 8 3 4 8 9 9 7 ...
- attr(*, ".internal.selfref")=<externalptr>

根據列型別選擇列

使用dplyr包中的select_if函式選擇整數列,如下所示:

library(data.table)
x1<-sample(LETTERS[1:4],25,replace=TRUE)
x2<-rnorm(25)
x3<-rpois(25,5)
DT1<-data.table(x1,x2,x3)
str(DT1)
library(dplyr)
DT1 %>% select_if(is.integer)

輸出

   x3
1:  6
2:  3
3:  3
4:  8
5:  3
6:  4
7:  8
8:  9
9:  9
10: 7
11: 3
12: 7
13: 7
14: 7
15: 4
16: 7
17: 5
18: 5
19: 6
20: 2
21: 2
22: 5
23: 4
24: 4
25: 7
    x3

示例2

建立data.table物件

讓我們建立一個如下所示的data.table物件:

library(data.table)
y1<-sample(c(TRUE,FALSE),25,replace=TRUE)
y2<-factor(sample(c("I","II","III"),25,replace=TRUE))
DT2<-data.table(y1,y2)
DT2

輸出

執行上述指令碼後,會生成以下輸出(由於隨機化,此輸出可能因系統而異):

     y1   y2
1:  TRUE  III
2:  FALSE III
3:  TRUE  I
4:  FALSE II
5:  FALSE III
6:  FALSE I
7:  TRUE  II
8:  FALSE II
9:  TRUE  II
10: FALSE III
11: TRUE  I
12: TRUE  I
13: TRUE  II
14: FALSE II
15: TRUE  I
16: FALSE III
17: FALSE I
18: FALSE II
19: TRUE  II
20: FALSE II
21: TRUE  III
22: TRUE  I
23: TRUE  I
24: TRUE  II
25: FALSE III
     y1   y2

根據列型別選擇列

使用dplyr包中的select_if函式選擇邏輯列,如下所示:

library(data.table)
y1<-sample(c(TRUE,FALSE),25,replace=TRUE)
y2<-factor(sample(c("I","II","III"),25,replace=TRUE))
DT2<-data.table(y1,y2)
library(dplyr)
DT2 %>% select_if(is.logical)

輸出

     y1
1:  TRUE
2:  FALSE
3:  TRUE
4:  FALSE
5:  FALSE
6:  FALSE
7:  TRUE
8:  FALSE
9:  TRUE
10: FALSE
11: TRUE
12: TRUE
13: TRUE
14: FALSE
15: TRUE
16: FALSE
17: FALSE
18: FALSE
19: TRUE
20: FALSE
21: TRUE
22: TRUE
23: TRUE
24: TRUE
25: FALSE
     y1

更新於:2021年11月12日

瀏覽量:387

開啟你的職業生涯

完成課程獲得認證

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