【问题标题】:Output only Numeric variables or Categorical variables in a data frame [duplicate]仅输出数据框中的数字变量或分类变量[重复]
【发布时间】:2018-05-07 06:51:04
【问题描述】:

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

【问题讨论】:

  • 你已经差不多了。只需使用 Y 值子集您的数据框,就像这样,X[ ,Y]

标签: r


【解决方案1】:

使用基础 R:

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

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

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

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

【讨论】:

  • 感谢这项工作。只是一个后续问题。如果我还想排除所有缺失/空值的变量怎么办?如何将其添加到代码中?
  • 假设我有变量“国家”,它只有 NULL 或 NA 值。如何排除该变量。
  • 查看complete.cases(NA)is.na()。您可能想从这里开始:rdocumentation.org/packages/stats/versions/3.5.0/topics/…
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 2020-04-17
    • 1970-01-01
    • 2014-06-20
    • 2019-05-20
    • 2014-12-17
    • 1970-01-01
    • 2022-01-01
    • 1970-01-01
    • 2019-07-12
    相关资源
    最近更新 更多