请解释加入?

Explain joining please?

我需要一些帮助来理解加入的概念。

如果您有 2 个具有公共变量的数据文件,我了解如何在心理上模拟联接的工作方式。喜欢:

Animal Weight Age
Dog 12 5
Cat 4 19
Fish 2 4
Mouse 1 2
Animal Award
Dog 1st
Cat 1st
Fish 3rd
Mouse 5th

这些可以合并,因为动物列是完全相同的,它只是将另一个变量添加到对动物的相同观察中。

但是我不明白是这样的:

死亡率(心脏病发作)

Year Place Death Rate (Heart Attack)
2011 Paris 200
2011 Paris 94
2011 Rome 23
2009 London 15

死亡率(车祸)

Year Place Death Rate (Car Crash)
2011 London 987
2012 London 34
2012 Paris 09
2007 Melbourne 12

变量类型相同(年份、城市和死亡率)。但是年份值不一样,它们的顺序不一样,例如 2011 年的数量不一样,位置不同,显然有两个不同的死亡率需要在两个不同的列中,但是如何这个加入有效吗?你会加入哪个变量?加入后如何配置?如果这是跨越更大的数据集,它会导致很多 NA 值吗?

我知道有不同类型的联接可以做不同的事情,但我只是在努力了解如果您希望能够比较城市和城市中两种不同的死亡率,那么年份和城市会怎样年。

谢谢!

如果你这样做

merge(heart, car, all=TRUE)
#   Year     Place Death_Rate_heart Death_Rate_Car
# 1 2007 Melbourne               NA             12
# 2 2009    London               15             NA
# 3 2011    London               NA            987
# 4 2011     Paris              200             NA
# 5 2011     Paris               94             NA
# 6 2011      Rome               23             NA
# 7 2012    London               NA             34
# 8 2012     Paris               NA              9

merge 自动查找匹配的 names 并合并它们。它在这些列中寻找 ,因此它们不会混合。你可以更详细地做

merge(heart, car, all=TRUE, by.x=c("Year", "Place"), by.y=c("Year", "Place"))

这就是本例中实际发生的情况。


数据:

heart <- structure(list(Year = c(2011L, 2011L, 2011L, 2009L), Place = c("Paris", 
"Paris", "Rome", "London"), Death_Rate_heart = c(200L, 94L, 23L, 
15L)), class = "data.frame", row.names = c(NA, -4L))


car <- structure(list(Year = c(2011L, 2012L, 2012L, 2007L), Place = c("London", 
"London", "Paris", "Melbourne"), Death_Rate_Car = c(987L, 34L, 
9L, 12L)), class = "data.frame", row.names = c(NA, -4L))