【发布时间】:2014-01-09 10:02:02
【问题描述】:
我有两个数据集,一个是另一个的子集,但该子集有额外的列,观察较少。
基本上,我为每个参与者分配了一个唯一的 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(Healthdata,Healthdata.1,all.x=TRUE,by='ID')相当于join(Healthdata, Healthdata.1, type = "left", by = "ID")我只是发现 plyr 比合并更直观。 -
@MartínBel,我试过了。但是,它部分起作用。它只合并其中一个参与者,并将 SSE 的值提供给另一个参与者 NA。当两个或多个参与者具有相同的 HHID 时,我希望为来自同一所房子的每个参与者分配相同的 SSE,而不是为一个分配 SSEscore,为另一个分配 NA
-
@PrasannaNanda,谢谢,请查看更新后的问题,以及所需的输出。
-
6.5 来自哪里?