在R中,我在四个文件的每个文件中连接4个具有相同变量名的数据文件:
ps <- rbind(ps1, ps2, ps3, ps4)
使用read.xls()
函数,4个文件中的每个文件都有无错误读取的数据。但是,在rbind()
命令之后,我收到以下警告消息,并且rbind()
生成的文件中的某些数据不正确(通过设置为缺失),即使数据在4中是正确的个人数据文件。
Warning messages:
1: In `[<-.factor`(`*tmp*`, ri, value = c(NA, NA, NA, NA, NA, NA, NA, :
invalid factor level, NA generated
2: In `[<-.factor`(`*tmp*`, ri, value = c(343L, 343L, NA, 343L, NA, :
invalid factor level, NA generated
3: In `[<-.factor`(`*tmp*`, ri, value = c(54L, 54L, 54L, 54L, 55L, :
invalid factor level, NA generated
4: In `[<-.factor`(`*tmp*`, ri, value = c(NA, NA, NA, NA, NA, NA, NA, :
invalid factor level, NA generated
我不知道这些消息是什么意思或如何解决我的问题。非常感谢您的帮助。谢谢。
答案 0 :(得分:2)
可能最简单的解决方法是,在阅读XLS
个文件时,您可以设置stringsAsFactors=FALSE
。
发生的事情是某些列已转换为factor
,但每个文件都有自己的factor
,并且无法自动合并。
如需进一步阅读:Loading Data From a File,Factors in R
答案 1 :(得分:0)
在你的rbinding之前试试这个:
pstmp <- lapply( list (ps1, ps2, ps3, ps4),
function(df) as.data.frame(
lapply(df, if (is.factor(cl)){ as.character(cl)
} else {cl} ) ) )
然后:
ps <- do.call(rbind, pstmp)
(穿过我的手指,我得到了parens和braces正确。)或者做OldPro建议的。也可以使用options()
关闭自动因子构造。