【问题标题】:Select only numeric variables of a data frame in R [duplicate]仅选择R中数据框的数值变量[重复]
【发布时间】:2020-06-16 19:12:53
【问题描述】:

我知道这个问题很简单,但我有一个更具体的问题:

我有一个数据框,包含 50 个变量(数字和非数字)和 5000 个观察值。

现在我要做的是创建另一个数据框,其中仅包含原始数据框的数值变量。

在这个网站上我找到了我的问题的解决方案,即:

numeric_variables<-unlist(lapply(original_data,is.numeric))
X<-original_data[numeric_variables]

但我想知道:为什么如果我这样尝试,它却不起作用?怎么了?

numeric_variables2<-apply(original_data,2,is.numeric)
x<-original_data[numeric_variables2]

【问题讨论】:

  • apply 转换为matrix 并且矩阵可以有单一类型,因此,如果有字符列,它本质上是转换为字符类型。用tidyverse检查cbind(1:5, LETTERS[1:5]),是original_data %&gt;% select_if(is.numeric)iris %&gt;% select(where(is.numeric))
  • 试试Filter(is.numeric, df1)
  • 例如更好的是iris[mapply(is.numeric, iris)]
  • @markus,不起作用
  • 好的,重新关闭,保留 Markus 关于如何选择数字列的骗局,但还添加了一个骗局,说明 apply 将事物转换为矩阵,从而丢失了类信息。有了 akrun 的评论,希望这足以引导任何发现这个问题的人朝着正确的方向前进。

标签: r dataframe subset predicate


【解决方案1】:

试试这个:

names_num <- names(which(sapply(df, is.numeric)))
df_num <- df[, names_num]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-26
    • 1970-01-01
    相关资源
    最近更新 更多