r 基于差异组合数据

r combining data based on differece

有没有办法根据它们的差异合并两个数据框?例如说我们有这个数据框...

set.seed(1234)
example1 = data.frame(Area=c("Zone1","Zone2","Zone3","Zone4"),
                       X1a=sample(10,4), X1b=sample(10,4), X1c=sample(10,4),
                       X1d=sample(10,4), X1e=sample(10,4))

example1
#   Area X1a X1b X1c X1d X1e
#1 Zone1   9   3   1  10   3
#2 Zone2   3  10   2   8  10
#3 Zone3  10   9   7   1   5
#4 Zone4   2   2   4   4   2

然后我们做了一些这样的操作,我们最终得到...

example2<-example1[-c(2,4),]
example2
#   Area X1a X1b X1c X1d X1e
#1 Zone1   9   3   1  10   3
#3 Zone3  10   9   7   1   5

有没有办法根据它们之间的差异将这两个组合起来,比如我想把example2和example1组合起来,有没有办法这样结束?

example3<-combineDiff(original=example2, use= example1)

example3
#   Area X1a X1b X1c X1d X1e
#1 Zone1   9   3   1  10   3
#2 Zone2   3  10   2   8  10
#3 Zone3  10   9   7   1   5
#4 Zone4   2   2   4   4   2

所以我们不会以重复的 Zone1 和 Zone3 行结束?还有没有办法改变这些新行的值?例如像这样的东西?

example3<-combineDiff(original=example2, use=example1, newRows=0)

example3
#   Area X1a X1b X1c X1d X1e
#1 Zone1   9   3   1  10   3
#2 Zone2   0   0   0   0   0
#3 Zone3  10   9   7   1   5
#4 Zone4   0   0   0   0   0

我问是因为我正在使用 leaflet 和 r 可视化一些数据,而且我在对数据进行采样时 运行 遇到了麻烦(例如 "show only data from men" 或 "people over 50").我设置它的方式是数据基于 checkboxinput 获取子集,并且我最终得到的行数少于我试图可视化的区域,这经常会弄乱输出,所以我需要一种方法重新插入丢失的 rows/zones 并更改它们的值,以便我知道它们应该为零或 NA。

在第一个(或两个)数据框的每个区域值一行的情况下,您可以尝试:

example <- rbind(example1[!example1$Area %in% example2$Area, ], example2)

如果你想按区域列向后排列,你可以这样做:

example <- example[sort(example$Area), ]