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), ]
有没有办法根据它们的差异合并两个数据框?例如说我们有这个数据框...
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), ]