[英]How to convert all factor variables into numeric variables in a large data frame without loosing variables labels?
[英]How to convert all factor variables into numeric variables (in multiple data frames at once)?
我有n个数据框,每个数据框对应于一个城市的数据。
每个数据帧有3个变量,目前它们都是因子变量。
我想将它们全部转换为数字变量。
我首先创建了一个包含所有数据帧名称的向量,以便在for循环中使用。
cities <- as.vector(objects())
for ( i in cities){
i <- as.data.frame(lapply(i, function(x) as.numeric(levels(x))[x]))
}
尽管代码可以运行并且没有错误代码,但是我的数据帧没有任何变化,因为所有三个变量仍然是因子变量。
最奇怪的是,当它们一个接一个地执行时(如下):
df <- as.data.frame(lapply(df, function(x) as.numeric(levels(x))[x]))
实际上,您要尝试的是修改字段的类型(如果它是一个因素)(为数字类型)。 使用purrr
一种方法是:
library(purrr)
map(cities, ~ modify_if(., is.factor, as.numeric))
请注意, modify()
本身就像lapply()
但是它不会更改您要修改的对象(在本例中为数据lapply()
的基础数据结构。 modify_if()
只是将谓词作为附加参数。
对于任何对我的问题感兴趣的人,我都会给出答案:
for ( i in cities){
assign(i, as.data.frame(lapply(get(i), function(x) as.numeric(levels(x))[x])))
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.