【发布时间】:2023-03-19 09:02:01
【问题描述】:
我正在处理一个非常大的数据集。请考虑以下示例:
df1<-{data.frame(MyID=c(1, 2, 3, 1, 2, 3, 1, 2, 3, 4, 5),v1=c(0.1, 0.2, NA, 0.4, 0.2, 0.1, 0.8, 0.3, 0.1, 0.4, 0.3), v2=c(NA, 0.4, 0.2, 0.1, 0.8, 0.3, 0.1, 0.4, 0.3, 0.1, 0.2))}
df2<-{data.frame(MyID=c(1, 2, 3, 1, 2, 3, 1, 2, 3, 4, 5),v1=c(10, 8, 0, 6, 10, 5, 3, 1, 10, 8, 3), v2=c(0, 10, 5, 1, 8, 5,10, 3, 3, 1, 5))}
我想从 df1 中提取信息,但基于 df2 中每个 MyID 的最大值。最终结果应该是一个数据框:
- 每个唯一的 MyID 一行
- 每一列的 df1 中的值对应于 df2 的 MyID 组的最大值。
结果应该是
ExpectedResult<-{data.frame(MyID=c(1, 2, 3, 4, 5),v1=c(0.1,0.2,0.1,0.4,0.3), v2=c(0.1,0.4,0.2,0.1,0.2))}
我已经尝试过但只解决了部分问题:
- 使用组并找到每个组的最大值,例如
df2Max<- df2 %>% group_by(MyID) %>% slice_max(1,) - 使用例如分割数据
df2.split <- split(df2, list(df2$MyID))
但是,我仍然不确定如何链接两个数据框以提取我需要的内容。
【问题讨论】:
标签: r dataframe group-by split max