繁体   English   中英

如何将所有因子变量转换为数值变量(一次在多个数据框中)?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM