如何根据 R 中的类选择 data.table 对象列?
要data.table根据R中的类选择对象列,我们可以按照以下步骤操作-
首先,创建一个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输出结果
执行时,上述脚本生成以下内容output(thisoutputwillvaryonyoursystemduetorandomization)-
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输出结果执行时,上述脚本生成以下内容output(thisoutputwillvaryonyoursystemduetorandomization)-
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