替换R中每个数据帧中的所有因子变量

时间:2014-08-23 08:23:34

标签: r

我有三个具有相同结构的数据框。我想对每个任务执行相同的任务,例如将因子变量重新格式化为数字变量。

假设每个数据框由十个变量组成,其中五个具有类因子,我希望它们是数字。这是我试过的。

all.df <- list(df1, df2, df3)
factors <- sapply(all.df[[1]], is.factor)
all.df <- lapply(all.df, function(x) {
    lapply(x[factors], as.numeric(as.character(x)) })

问题在于,这种方式我最终只得到all.df中的因子变量,而我仍然想要其他(非因子,而不是重新格式化)变量。

1 个答案:

答案 0 :(得分:0)

尝试:

all.df <- lapply(all.df, function(x) {
                    x[factors] <-lapply(x[factors], function(x) as.numeric(as.character(x)))
                    x})

str(all.df[[1]])
#'data.frame':  5 obs. of  3 variables:
# $ col1: num  6 7 8 9 10
# $ col2: num  1 2 3 4 5
# $ col3: int  1 2 3 4 5

数据

df <- data.frame(col1=factor(6:10),col2=factor(1:5), col3=1:5)
all.df <- list(df,df,df)
factors <- sapply(all.df[[1]], is.factor)