【发布时间】:2015-11-10 01:39:38
【问题描述】:
我正在尝试根据 ID-variable 合并 R 中的两个数据帧,因为在第一个数据帧中,ID-variable 是一个因素,而在第二个数据帧中,ID-variable 是一个数字向量
datC <- data.frame("ID" = c("001","010","100","110"), "X" = rnorm(4))
datD <- data.frame("ID" = c(001,010,100,110,210), "Y" = rpois(5,3))
merge(datC,datD,by="ID")
ID X Y
100 0.03284493 2
110 -0.41690986 3
我们看到 001,010 不见了,我很清楚为什么它们不见了 以及如何解决这个问题
datC$ID <- as.numeric(as.character(datC$ID))
merge(datC,datD,by="ID")
我试图通过让 R 避免将字符向量视为一个因素来找到另一种解决方案
datC <- data.frame("ID" = c("001","010","100","110"), "X" = rnorm(4),stringsAsFactors = F)
datD <- data.frame("ID" = c(001,010,100,110,210), "Y" = rpois(5,3))
当我根据 ID-variable 合并这两个数据帧时,我预计我会得到空结果,因为我们有一个字符与数字向量,但实际上 R 给了我与 ID-Variable 相同的结果第一个数据框是一个因素。
merge(datC,datD,by="ID")
ID X Y
100 -0.2797956 4
110 -1.0397791 4
那么谁能解释一下为什么我的期望是错误的!
【问题讨论】: