不确定为什么 merge() 没有水平合并所有行(在 R 中)
Unsure why merge() is not merging all rows horizontally (in R)
我在 R 中有 2 个数据帧:
ag<-structure(list(Crop = c("beans", "chayote", "chives", "chiwa squash",
"cilantro", "corn", "epazote", "flower chiwa squash", "jicama",
"macal", "onion", "papaya", "pineapple", "plantain", "red onion",
"scallions", "solanum americanum ", "sugar cane", "sweet potato",
"tomato", "yam", "yuca"), kg = c(21, 100, 26, 116, 2, 505, 0.05,
4, 3, 29, 3, 14, 6.5, 407, 29, 10, 12, 99, 50, 68, 8, 121)), .Names = c("Crop",
"kg"), row.names = c(1L, 2L, 3L, 4L, 5L, 6L, 7L, 8L, 9L, 10L,
11L, 13L, 14L, 15L, 16L, 17L, 18L, 19L, 20L, 22L, 23L, 24L), class = "data.frame")
ag1<-structure(list(Crop = c("agouti", "beans", "chayote", "chives",
"chiwa squash", "cilantro", "corn", "epazote", "flower chiwa squash",
"jicama", "llame", "macal", "mustard", "onion", "paca", "papaya",
"pineapple", "plantain", "red onion", "scallions", "solanum americanum ",
"sugar cane", "sweet potato", "tomato", "watermelon", "yam",
"yuca"), kg = c(5, 25, 246.5, 50, 158, 303.83, 927, 0.35, 4,
3, 8, 49, 1, 3, 34, 155, 7.5, 717, 318, 14, 17, 237, 98, 111.5,
12, 25, 191)), .Names = c("Crop", "kg"), row.names = c(1L, 2L,
3L, 4L, 5L, 6L, 7L, 8L, 9L, 10L, 11L, 12L, 13L, 14L, 16L, 17L,
18L, 19L, 20L, 21L, 22L, 23L, 24L, 26L, 27L, 28L, 30L), class = "data.frame")
我想按 "Crop" 列合并它们,无论裁剪出现在两个数据框中还是只出现在一个数据框中。如果 0 或 NA 仅出现在一个数据框中,则可以将其用作占位符。
merge(ag,ag1,all="TRUE")
目标是让数据框包含一列农作物名称,第二列包含来自 ag 的公斤数,第三列包含来自 ag1 的公斤数。但是,当我这样做时,它似乎是垂直合并而不是水平合并。最重要的是,并非所有行似乎都在合并。
structure(list(Crop = c("agouti", "beans", "beans", "chayote",
"chayote", "chives", "chives", "chiwa squash", "chiwa squash",
"cilantro", "cilantro", "corn", "corn", "epazote", "epazote",
"flower chiwa squash", "jicama", "llame", "macal", "macal", "mustard",
"onion", "paca", "papaya", "papaya", "pineapple", "pineapple",
"plantain", "plantain", "red onion", "red onion", "scallions",
"scallions", "solanum americanum ", "solanum americanum ", "sugar cane",
"sugar cane", "sweet potato", "sweet potato", "tomato", "tomato",
"watermelon", "yam", "yam", "yuca", "yuca"), kg = c(5, 21, 25,
100, 246.5, 26, 50, 116, 158, 2, 303.83, 505, 927, 0.05, 0.35,
4, 3, 8, 29, 49, 1, 3, 34, 14, 155, 6.5, 7.5, 407, 717, 29, 318,
10, 14, 12, 17, 99, 237, 50, 98, 68, 111.5, 12, 8, 25, 121, 191
)), .Names = c("Crop", "kg"), row.names = c(NA, -46L), class = "data.frame")
我不确定为什么会这样。有什么建议么?谢谢!
也许这就是你想要的?
merge(x = ag,y = ag1,by = 'Crop',all = T)
我在 R 中有 2 个数据帧:
ag<-structure(list(Crop = c("beans", "chayote", "chives", "chiwa squash",
"cilantro", "corn", "epazote", "flower chiwa squash", "jicama",
"macal", "onion", "papaya", "pineapple", "plantain", "red onion",
"scallions", "solanum americanum ", "sugar cane", "sweet potato",
"tomato", "yam", "yuca"), kg = c(21, 100, 26, 116, 2, 505, 0.05,
4, 3, 29, 3, 14, 6.5, 407, 29, 10, 12, 99, 50, 68, 8, 121)), .Names = c("Crop",
"kg"), row.names = c(1L, 2L, 3L, 4L, 5L, 6L, 7L, 8L, 9L, 10L,
11L, 13L, 14L, 15L, 16L, 17L, 18L, 19L, 20L, 22L, 23L, 24L), class = "data.frame")
ag1<-structure(list(Crop = c("agouti", "beans", "chayote", "chives",
"chiwa squash", "cilantro", "corn", "epazote", "flower chiwa squash",
"jicama", "llame", "macal", "mustard", "onion", "paca", "papaya",
"pineapple", "plantain", "red onion", "scallions", "solanum americanum ",
"sugar cane", "sweet potato", "tomato", "watermelon", "yam",
"yuca"), kg = c(5, 25, 246.5, 50, 158, 303.83, 927, 0.35, 4,
3, 8, 49, 1, 3, 34, 155, 7.5, 717, 318, 14, 17, 237, 98, 111.5,
12, 25, 191)), .Names = c("Crop", "kg"), row.names = c(1L, 2L,
3L, 4L, 5L, 6L, 7L, 8L, 9L, 10L, 11L, 12L, 13L, 14L, 16L, 17L,
18L, 19L, 20L, 21L, 22L, 23L, 24L, 26L, 27L, 28L, 30L), class = "data.frame")
我想按 "Crop" 列合并它们,无论裁剪出现在两个数据框中还是只出现在一个数据框中。如果 0 或 NA 仅出现在一个数据框中,则可以将其用作占位符。
merge(ag,ag1,all="TRUE")
目标是让数据框包含一列农作物名称,第二列包含来自 ag 的公斤数,第三列包含来自 ag1 的公斤数。但是,当我这样做时,它似乎是垂直合并而不是水平合并。最重要的是,并非所有行似乎都在合并。
structure(list(Crop = c("agouti", "beans", "beans", "chayote",
"chayote", "chives", "chives", "chiwa squash", "chiwa squash",
"cilantro", "cilantro", "corn", "corn", "epazote", "epazote",
"flower chiwa squash", "jicama", "llame", "macal", "macal", "mustard",
"onion", "paca", "papaya", "papaya", "pineapple", "pineapple",
"plantain", "plantain", "red onion", "red onion", "scallions",
"scallions", "solanum americanum ", "solanum americanum ", "sugar cane",
"sugar cane", "sweet potato", "sweet potato", "tomato", "tomato",
"watermelon", "yam", "yam", "yuca", "yuca"), kg = c(5, 21, 25,
100, 246.5, 26, 50, 116, 158, 2, 303.83, 505, 927, 0.05, 0.35,
4, 3, 8, 29, 49, 1, 3, 34, 14, 155, 6.5, 7.5, 407, 717, 29, 318,
10, 14, 12, 17, 99, 237, 50, 98, 68, 111.5, 12, 8, 25, 121, 191
)), .Names = c("Crop", "kg"), row.names = c(NA, -46L), class = "data.frame")
我不确定为什么会这样。有什么建议么?谢谢!
也许这就是你想要的?
merge(x = ag,y = ag1,by = 'Crop',all = T)