我有两个数据集,一个是另一个数据集的子集,但该子集具有附加列,且观测值较少。
基本上,我为每个参与者分配了一个唯一的 ID,然后是一个 HHID,即招募他们的学院 ID(例如,从 11 个学院招募了 15 名参与者)。
> Healthdata <- data.frame(ID = gl(15, 1), HHID = c(1,2,2,3,4,5,5,5,6,6,7,8,9,10,11))
> Healthdata
现在,我有一个数据子集,每个家庭只有一名参与者,选择的是看电视时间较长的人。在此子集数据中,我计算了每栋房屋的社会经济得分 (SSE)。
> set.seed(1)
> Healthdata.1<- data.frame(ID=sample(1:15,11, replace=F), HHID=gl(11,1), SSE = sample(-6.5:3.5, 11, replace=TRUE))
> Healthdata.1
现在,我想将子集 (Healthdata.1) 中的 SSE 分配给更大数据 (Healthdata) 的唯一参与者,以便来自同一房屋的参与者获得相同的分数。
我无法简单地合并它,因为数据集具有不同数量的观察值,较大的数据集有 15 个,但子集中只有 11 个。
R中有什么办法可以做到这一点吗?我对此很陌生,并且对此很困惑。
我希望所需的输出如下所示,即来自同一 HHID(房屋)的 ID(参与者)应该具有相同的 SSE 分数。以下输出只是我需要的示例,上面的种子不会给出相同的输出。
ID HHID SSE
1 1 -6.5
2 2 -5.5
3 2 -5.5
4 3 3.3
5 4 3.0
6 5 2.58
7 5 2.58
8 5 2.58
9 6 -3.05
10 6 -3.05
11 7 -1.2
12 8 2.5
13 9 1.89
14 10 1.88
15 11 -3.02
谢谢。
最佳答案
您可以使用 merge
,默认情况下它将按列交叉点合并。
merge(Healthdata,Healthdata.1,all.x=TRUE)
ID HHID SSE
1 1 1 NA
2 2 2 NA
3 3 2 NA
4 4 3 NA
5 5 4 NA
6 6 5 NA
7 7 5 NA
8 8 5 NA
9 9 6 0.7
10 10 6 NA
11 11 7 NA
12 12 8 NA
13 13 9 NA
14 14 10 NA
15 15 11 NA
或者您可以选择合并的列:
merge(Healthdata,Healthdata.1,all.x=TRUE,by='ID')
关于r - 合并具有不相等观测值的数据集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21016965/