如何转换R中的多个列

我有一个从csv文件中检索的数据框。 我需要获取某些列的列类型,并将这些类型应用于另一个data.frame的相应列。

例如,在某些步骤之后,来自csv的d​​ata.frame被称为Table1。

header <- names(Table1)
"Acct" "Tran"
class(Table1$Acct)
"character"
class(Table1$Tran)
"character"

然后我需要将Table2的相应“Acct”和“Tran”列转换为字符。

我试过了

class(Table1[header])
[1] "data.frame"
class(Table1$header)
[1] "NULL"

我如何将Table1的列类型应用于Table2? 我必须使用for循环来完成转移吗?

谢谢

**** UPDATES ****由于Table1的数据类型并不复杂,我创建了一个函数来手动转换列类型。 as.numeric(as.character(After))很重要。 如果After是一个因子,则as.numeric(After)将更改这些值。

Typeconvertion < - 函数(之前和之后){

CLASSTYPE <-class(前)

if(classtype ==“factor”){After <-as.character(After)}

else if(classtype ==“integer”){After < - as.numeric(as.character(After))}

else if(classtype ==“numeric”){After < - as.numeric(as.character(After))}

else if(classtype ==“character”){After < - as.character(After)}

其他{After < - After}

}


考虑一个更灵活的功能。

    matchColClasses<- function(df1, df2){
    # Purpose:  protect joins from column type mismatches - a problem with multi-column empty df          
    # Input:    df1 - master for class assignments, df2 - for col reclass and return.
    # Output:   df2 with shared columns classed to match df1
    # Usage:    df2 <- matchColClasses(df1, df2)

      sharedColNames <- names(df1)[names(df1) %in% names(df2)]
      sharedColTypes <- sapply(df1[,sharedColNames], class)

      for (n in sharedColNames) {
        class(df2[, n]) <- sharedColTypes[n]
      }

      return(df2)
     }
链接地址: http://www.djcxy.com/p/70899.html

上一篇: How to convert multiple columns in R

下一篇: Create an empty data.frame