首页 > 解决方案 > If Else on variables and Merge in R

问题描述

合并两个数据集时遇到问题。假设有 2 个数据集 A 和 B。通过将目标变量为 abc 的 X 和 Y 合并形成 A。

因此,当我合并 A 和 B 时,已经形成的 A 的结果不会反映在 A 和 B 的最终数据集上。随着我合并 A 和 B 时,我的数据记录数在最终数据集中会增加。我尝试了 unique() 和 distinct() 函数,但无法将它们应用于特定的关键变量,如协议 ID。

标签: r

解决方案


欢迎来到堆栈溢出!

由于缺乏细节,很难确切知道如何解决您的问题。将来请尝试更精确,并举例说明您的数据是什么样的。

我想你的两个数据集 A 和 B 是数据框。而不是使用合并尝试 cbind。当然,如果您的数据集有不同的行数,cbind 将不起作用。下面的代码将 NA 添加到行数最少的数据帧中。这将使两个数据帧具有相同的行数,因此 cbind 将起作用。这不是最优雅的解决方案,但它可能会起作用。

if(nrow(A) > nrow(B)){
  num.rows <- nrow(A)
}else{
  num.rows <- nrow(B)
}

if (nrow(A) == num.rows){
  n = nrow(A) - nrow(B)
  new.rows <- data.frame(1:n)
  for(i in 1:nrow(new.rows)){
    new.rows[i,,] <- NA
}
B <- rbind(new.rows, B)

}else{
  n = nrow(B) - nrow(A)
  new.rows <- data.frame(1:n)
  for(i in 1:nrow(new.rows)){
  new.rows[i,,] <- NA
}
B <- rbind(new.rows, B)
}

推荐阅读