温馨提示:本文翻译自stackoverflow.com,查看原文请点击:r - Merge rows with the same ID but with overlapping variables
grouping id merge r reduce

r - 合并具有相同ID但变量重叠的行

发布于 2020-04-15 11:13:52

我在r中有超过6000个观测值和96个变量的数据。

数据与个人组及其活动等有关。如果有组返回,则再次记录组ID号并进行新的观察。我需要按ID合并行,以使#个人的记录数最高,但是活动等是两种观察结果的组合。

数据包含#个人,活动,影响,到达时间等。问题在于,某些观测值分为两行,因此可能在另一行中记录了同一组的活动。两种观察的组ID相同,但其中一个可能记录了#个个体并记录了一些活动记录或影响,但第二个观察可能不完整,只有组ID和影响(除了第一个记录中的影响) )。小组中的个人#永远不会改变,因此我需要某种方式将它们组合在一起,以使活动具有累加性,但#visitors具有最高的价值,需要最早记录到达时间,并且需要将出发时间记录为2个观察结果中的较晚者。

有谁知道如何根据组ID合并观察值,但如何根据变量更改合并协议。

在此处输入图片说明

查看更多

提问者
Andrew Torsney
被浏览
69
Em Laskey 2020-02-04 21:58

我不确定这是否真的是您想要的,但是要基于多个条件组合数据帧的行,可以使用该dplyr包及其summarise()功能。我生成了一些数据以直接在R中使用,您必须根据需要修改代码。

# generate data
ID<-rep(1:20,2)
visitors<-sample(1:50, 40, replace=TRUE)
impact<-sample(rep(c("a", "b", "c", "d", "e"), 8))
arrival<-sample(rep(8:15, 5))
departure <- sample(rep(16:23, 5))

df<-data.frame(ID, visitors, impact, arrival, departure)
df$impact<-as.character(df$impact)

# summarise rows with identical ID
df_summary <- df %>%
  group_by(ID) %>%
  summarise(visitors = max(visitors), arrival = min(arrival), 
            departure = max(departure), impact = paste0(impact, collapse =", "))

希望这可以帮助!