我有两个具有不同类型数据(data 1 -3)的array.两者都涉及相同的参与者("person 1"等). df1包含列group.我想把这一栏加到df2栏,根据ID栏(例如,person3永远属于group1).请注意,在两个嵌套框中,每person行的行数(=唯一观测值)不相等.

这是我的输入:

ID <- c("person1", "person1", "person2", "person3", "person3", "person3", "person4")
data1 <- c(1:7)
data2 <- c(6:12)
group <- c("group1", "group1", "group2", "group1", "group1", "group1", "group2")
df1 <- data.frame(ID, data1, data2, group)

ID <- c("person1", "person2", "person2", "person3", "person3", "person4", "person4")
data3 <- c(7:13)
df2 <- data.frame(ID, data3)

> df1
       ID data1 data2  group
1 person1     1     6 group1
2 person1     2     7 group1
3 person2     3     8 group2
4 person3     4     9 group1
5 person3     5    10 group1
6 person3     6    11 group1
7 person4     7    12 group2

> df2
       ID data3
1 person1     7
2 person2     8
3 person2     9
4 person3    10
5 person3    11
6 person4    12
7 person4    13

这是所需的输出:

ID <- c("person1", "person2", "person2", "person3", "person3", "person4", "person4")
data3 <- c(7:13)
group <- c("group1", "group2", "group2", "group1", "group1", "group2", "group2")
df2final <- data.frame(ID, data3, group)

> df2final
       ID data3  group
1 person1     7 group1
2 person2     8 group2
3 person2     9 group2
4 person3    10 group1
5 person3    11 group1
6 person4    12 group2
7 person4    13 group2

谢谢大家!

推荐答案

try merge+unique

> merge(df2, unique(df1[c("ID","group")]))
       ID data3  group
1 person1     7 group1
2 person2     8 group2
3 person2     9 group2
4 person3    10 group1
5 person3    11 group1
6 person4    12 group2
7 person4    13 group2

R相关问答推荐

按崩溃类别分类的指数

卸载安装了BRM的模型发出的警告

使用sensemakr和fixest feols模型(R)

如何使用R中的dhrr函数将李克特量表的因子列从长转换为宽?

获取一个数据库框架的摘要,该数据库框架将包含一列数据库框架,

过滤器数据.基于两列的帧行和R中的外部向量

ggplot2中的X轴显示数值,单位为百,而不是十

使用case_match()和char数组重新编码值

用相同方法得到不同函数的ROC最优截断值

如何得到R中唯一的组合群?

在ggplot2中更改小提琴情节的顺序

矩阵的堆叠条形图,条形图上有数字作为标签

打印XTS对象

在使用tidyModels和XGBoost的二进制分类机器学习任务中,所有模型都失败

使用RSelenium在R中抓取Reddit时捕获多个标签

在多页PDF中以特定布局排列的绘图列表不起作用

在R中,如何将误差条放置在堆叠的每个条上?

提高圣彼得堡模拟的速度

位置_道奇在geom_point图中不躲避

使用列名和r中的前缀 Select 列的CREATE函数