仅输出数据框中的数字变量或分类变量

时间:2018-05-07 06:51:05

标签: r

我想从'Arrests'创建2个数据帧,第一个只包含带有数值的变量,另一个只包含分类变量。例如:

X <- data.frame(Arrests)  
X
     released colour year age    sex employed citizen checks
1         Yes  White 2002  21   Male      Yes     Yes      3
2          No  Black 1999  17   Male      Yes     Yes      3
3         Yes  White 2000  24   Male      Yes     Yes      3
4          No  Black 2000  46   Male      Yes     Yes      1
5         Yes  Black 1999  27 Female      Yes     Yes      1
6         Yes  Black 1998  16 Female      Yes     Yes      0
7         Yes  White 1999  40   Male       No     Yes      0

我想获得一个仅包含年份,年龄和检查的数据框,因为它们是数字变量。另一个数据框架包括已发布,颜色,性别,就业和公民,因为这些是分类变量。 我尝试了下面的代码

Y <- sapply(X, is.numeric)
Y
released   colour     year      age      sex employed  citizen   checks 
   FALSE    FALSE     TRUE     TRUE    FALSE    FALSE    FALSE     TRUE 

现在它知道哪些是数字变量,但是如何创建仅包含这3个数字变量的数据框?还有一个只包含5个分类变量的数据框?

2 个答案:

答案 0 :(得分:3)

使用dplyr,您可以使用select_if

library(dplyr)

# Your data
arrests <- data.frame(released = c("Yes", "No"),
                  colour = c("White", "Black"),
                  year = c(2002, 1999),
                  age = c(21,17))

# Solution
select_if(arrests, is.numeric) 

  year age
1 2002  21
2 1999  17

答案 1 :(得分:3)

使用基数R:

Y <- X[, sapply(X, is.numeric)]

是包含所有数字变量的data.frame。和

Z <- X[, !sapply(X, is.numeric)]

是包含所有分类变量的data.frame