请仔细查看示例数据集和所需结果以查看此问题的目的。这不是我正在寻找的合并数据集解决方案。所以我可以在这里找到答案:How to join (merge) data frames (inner, outer, left, right)?,也没有在这里Use apply() to assign value to new column。它指的是一种解决方案,如果它们符合条件,则将值分配给新的名称。将单元格值分配给for循环中的新列
这里我愿做一个可重复的说明:
Email <- as.factor(c("[email protected]", "[email protected]", "[email protected]","[email protected]", "[email protected]"))
dataset1 <- data.frame(Email)
Code <- as.factor(c("Z001", "Z002", "Z003","Z004","Z005"))
Email <- as.factor(c("[email protected]", "[email protected]", "[email protected]", "[email protected]","[email protected]"))
dataset2 <- data.frame(Code, Email)
这将导致在下面的示例数据集:
Email
1 [email protected]
2 [email protected]
3 [email protected]
4 [email protected]
5 [email protected]
Code Email
1 Z001 [email protected]
2 Z002 [email protected]
3 Z003 [email protected]
4 Z004 [email protected]
5 Z005 [email protected]
所需的输出:
Email Z002 Z004
1 [email protected] NA 1
2 [email protected] 1 NA
3 [email protected] NA NA
4 [email protected] NA NA
5 [email protected] NA NA
所以我想要编写一个循环来检查数据集1中是否出现数据集2的电子邮件,以及此条件是否正确与数据集2中的电子邮件相关联的代码被指定为数据集1的新列名称,其中该观察值的单元格值为1。我试图完成这个工作,并且期望输出的一个例子澄清了这个问题。
我自己试图修复它(我知道这是错的,但显示我的本意):
for(i in 1:nrow(dataset2)){
if(dataset2$Email[i] %in% dataset1$Email)
dataset1[,dataset2$Code[i]] <- dataset2$Code[i]
dataset1[,dataset2$Code[i]][i] <- 1
}
将是巨大的,如果有人可以帮助我。
非常感谢!我一直在寻找这个很长的时间,所以你的帮助非常感谢:) – Floris