如何按数据类型从data.frame中删除列?
我有一个data.frame,有将近200个变量列和不同类型的数据num、int、logi和factor。现在,我想删除类型因子的所有变量以运行函数cor 当我使用str函数时,我可以看到哪些变量是factor类型的,但我不知道如何选择和删除所有这些变量,因为逐个删除是非常耗时的。为了选择这些变量,我尝试了attr和typeof,但没有结果 某些方向?假设使用通用data.frame,这将删除类型为factor的列 编辑 根据@Roland的建议,你也可以保留那些不属于你的因素。随便你喜欢哪个如何按数据类型从data.frame中删除列?,r,R,我有一个data.frame,有将近200个变量列和不同类型的数据num、int、logi和factor。现在,我想删除类型因子的所有变量以运行函数cor 当我使用str函数时,我可以看到哪些变量是factor类型的,但我不知道如何选择和删除所有这些变量,因为逐个删除是非常耗时的。为了选择这些变量,我尝试了attr和typeof,但没有结果 某些方向?假设使用通用data.frame,这将删除类型为factor的列 编辑 根据@Roland的建议,你也可以保留那些不属于你的因素。随便你喜欢哪个
df[, sapply(df, class) != "factor"]
编辑2
当您关注cor函数时,@Ista还指出,在特定情况下,使用is.numeric进行过滤会更安全。以上仅用于删除因子类型
下面是一个非常有用的tidyverse解决方案,改编自:
联吡啶酯
>
>附加包装:“lubridate”
>以下对象已从“package:base”屏蔽:
>
>日期
图书馆管理员
创建具有多个变量类型的虚拟数据集
df%
变异
var_fct=作为系数var_fct,
var_date=as_date var_date
选择数值变量
df%>%选择\u如果是数字
>一个tibble:5x2
>变量数量1变量数量2
>
> 1 1 10
> 2 2 20
> 3 3 30
> 4 4 40
> 5 5 50
选择字符变量
df%>%选择字符
>一个tibble:5x1
>瓦鲁查尔
>
>1这个
>2是
>3假人
>4个字符
>5文本
选择因子变量
df%>%选择系数
>一个tibble:5x1
>var_fct
>
>1这个
>2是
>3假人
>4因素
>5文本
选择日期变量
df%>%选择日期
>一个tibble:5x1
>var_日期
>
> 1 2019-12-18
> 2 2019-12-19
> 3 2019-12-20
> 4 2019-12-21
> 5 2019-12-22
使用否定选择变量注意`~`
df%>%选择_if~!是数字。
>一个tibble:5x3
>变量字符变量fct变量日期
>
>2018年12月1日
>2是2019-12-19
>3假人2019-12-20
>4字符系数2019-12-21
>5文本2019-12-22
2019年12月18日由v0.3.0创建的df[,sapplydf,class!=factor]@Roland,谢谢,我似乎总是消极地认为:df[,sapplydf,is.numeric]更短、更安全,如果有字符列也能工作。感谢你们所有人:这段代码对于解决我的问题非常有用df[,sapplydf,is.numeric]整洁。但当列有多个类(例如POSIXlt POSIXt或hms difftime)时,似乎不起作用。。。
df[, sapply(df, class) != "factor"]
df[,sapply(df, is.numeric)]