如何转换R

时间:2015-10-08 20:34:42

标签: r csv

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

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

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

然后我需要转换Table2相应的&#34; Acct&#34;和#34; Tran&#34;列到字符。

我试过

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&lt; - function(Before,After){

CLASSTYPE&LT;一流(前)

if(classtype ==&#34; factor&#34;){After&lt; -as.character(After)}

else if(classtype ==&#34; integer&#34;){After&lt; - as.numeric(as.character(After))}

else if(classtype ==&#34; numeric&#34;){After&lt; - as.numeric(as.character(After))}

else if(classtype ==&#34; character&#34;){After&lt; - as.character(After)}

else {After&lt; - After}

}

1 个答案:

答案 0 :(得分:0)

考虑更灵活的功能。

    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)
     }