合并R中的半复制行

时间:2015-10-12 10:57:02

标签: r merge duplicates rows

我有一个数据框(在下面的示例中称为A),看起来像这个子集:

Survey HaulNo Year Species Unsexed Males Females HaulUnique Lat_long  
FRGF      1   2000  134567      NA     4      NA     1_2000     50.7_-2.5 
FRGF      1   2000  134567      NA    NA       5     1_2000     50.7_-2.5 
FRGF      2   2003  134578      10    NA      NA     2_2003     49.5_-1.5 
FRGF      3   1998  123557      NA    NA       7     3_1998     50.1_-0.5
FRGF      3   1998  123557      NA     3      NA     3_1998     50.1_-0.5 

我想合并这些行,使它们看起来像下面的数据:

Survey HaulNo Year Species Unsexed Males Females HaulUnique Lat_long  
FRGF      1   2000  134567      NA     4      5     1_2000     50.7_-2.5 
FRGF      2   2003  134578      10    NA      NA    2_2003     49.5_-1.5 
FRGF      3   1998  123557      NA     3      7     3_1998     50.1_-0.5 

基本上,我想合并行,以便列在" Unsexed"," Males"和"女性"所有都在一行内,而不是在当前情况下,这些数据被分割,并且重复信息出现在关于相同物种和运输等的多行上。当我合并行时,其他一切都被维护并保持唯一,这是至关重要的。行(一旦合并)代表一个独特的运输。

我不想对这3列应用任何类型的sum / mean / other函数,我希望保持所有其他变量不变。我也不想创建任何其他新列,并希望尽可能保留NA。

NB。鉴于我有一个庞大的数据集,我并不总是知道a)哪些行是半复制的,b)每行的Unsexed / Males / Females的组合都有信息。

我尝试过各种各样的方法来完成这一切,但我没有去做过,部分原因是因为RI的初学者一直在努力真正理解我尝试过的功能并将它们应用到我的身上。数据(聚合,ddply,强制转换)。

提前致谢。

1 个答案:

答案 0 :(得分:2)

这样的东西
aggregate(
  df[, c("Unsexed", "Males", "Females")],
  df[, c("Survey", "HaulNo", "Year", "Species", "HaulUnique", "Lat_long")],
  FUN = sum,
  na.rm = TRUE
)