我想从'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个分类变量的数据框?
答案 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
。