【问题标题】:Replace all factor variables in each dataframe in R替换 R 中每个数据框中的所有因子变量
【发布时间】:2014-08-23 08:23:33
【问题描述】:

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

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

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 中的因子变量,而我仍然想要其他(非因子,未重新格式化)变量。

【问题讨论】:

    标签: r


    【解决方案1】:

    试试:

    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)
    

    【讨论】:

    • 替换后在函数内调用x是关键。
    猜你喜欢
    • 2021-10-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-14
    相关资源
    最近更新 更多