如何将所有因子变量转换为数据框中的整数?

时间:2015-12-01 11:24:33

标签: r dataframe lapply

我尝试了这行代码。我认为它现在更早起作用了。

lapply(is.factor(df),levels(df)=(1:length(levels(df))))

我想将所有因子变量转换为整数值,如1,2,3等。

2 个答案:

答案 0 :(得分:2)

你快到了。您应该将数据框作为lapply中的第一个参数传递,然后运行is.factor作为构成lapply的第二个参数的函数的一部分

DFrame <- data.frame(x = letters[1:3],
                     y = letters[4:6],
                     z = LETTERS[9:11])

DFrame <- lapply(DFrame, 
                 function(t)
                   if (is.factor(t)) as.numeric(t) else t)
DFrame <- as.data.frame(DFrame)
DFrame

vapply(DFrame, class, character(1))

答案 1 :(得分:1)

使用新的purrr package,这将成为一个很好的单行:

library(purrr)

df <- data.frame(x = letters[1:3],
                 y = letters[4:6],
                 z = LETTERS[9:11])

df %>% map_if(is.factor, as.numeric) %>% str()
#> 'data.frame':    3 obs. of  3 variables:
#> $ x: num  1 2 3
#> $ y: num  1 2 3
#> $ z: num  1 2 3