我有一个从csv文件中检索的数据框。我需要获取某些列的列类型,并将这些类型应用于另一个data.frame的相应列。
例如,在某些步骤之后,来自csv的data.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}
}
答案 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)
}