我有一个数据框(在下面的示例中称为 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
本质上,我想合并行,以便“无性别”、“男性”和“女性”列中的信息全部在一行内,而不是在当前情况下,数据被分割并出现重复信息关于相同物种和运输等的多行。重要的是,当我合并行时,其他所有内容都保持并保持唯一,因为每一行(一旦合并)代表一个独特的运输。
我不想对这 3 列应用任何类型的总和/平均值/其他函数,并且我希望保持所有其他变量相同。我也不想创建任何额外的新列,并且希望尽可能保留 NA。
注意。鉴于我有一个巨大的数据集,我并不总是知道a)哪些行是半重复的,b)每行有关于无性别/男性/女性的哪些组合的信息。
我尝试了多种方法来做到这一点,但没有一种方法能够奏效,部分原因是作为 R 的初学者,我一直在努力真正理解我尝试过的函数并将它们应用到我的数据中(聚合、 ddply, Actor )。
提前致谢。
最佳答案
类似于
aggregate(
df[, c("Unsexed", "Males", "Females")],
df[, c("Survey", "HaulNo", "Year", "Species", "HaulUnique", "Lat_long")],
FUN = sum,
na.rm = TRUE
)
关于r - 合并R中的半重复行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33079387/