如何在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

开启你的职业生涯

完成课程获得认证

开始学习
广告