r - 合并具有不相等观测值的数据集

标签 r merge dataframe

我有两个数据集,一个是另一个数据集的子集,但该子集具有附加列,且观测值较少。

基本上,我为每个参与者分配了一个唯一的 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/

相关文章:

r - 如何在 R 中每隔一行添加一个字符串?

r - render()无法在容器化的Shiny应用中将.Rmd转换为.pdf

scala - Spark 计数大量列

git - 为什么 git merge 会让我丢失一行

python - 在 pandas 数据框中删除特定条件下的值

r - 如何删除R数据框中的列

R - 查找包含所有搜索词的所有向量元素的快速方法

r - R 中的均值函数(处理因素)

mysql - 如何在没有主键的情况下合并 MySQL 表,并根据 3 列确定一个表的优先级?

python - 合并多个线段