首页 > 解决方案 > 仅输出数据框中的数值变量或分类变量

问题描述

我想从“逮捕”创建一个 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 个分类变量的数据框?

标签: r

解决方案


使用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

推荐阅读