r - 如何根据多个条件对行求和 - R?

标签 r sum dataframe summary multiple-conditions

我有一个数据框,其中包含样地 ID (plotID)、树种代码 (species) 和覆盖值 (cover)。您可以看到其中一张图中有多个树种记录。如果每个图中存在重复的“物种”行,如何对“覆盖”字段求和?

例如,这里是一些示例数据:

# Sample Data
plotID = c( "SUF200001035014", "SUF200001035014", "SUF200001035014", "SUF200001035014", "SUF200001035014", "SUF200046012040",
       "SUF200046012040", "SUF200046012040", "SUF200046012040", "SUF200046012040", "SUF200046012040", "SUF200046012040")
species = c("ABBA",  "BEPA",  "PIBA2", "PIMA",  "PIRE",  "PIBA2", "PIBA2", "PIMA",  "PIMA",  "PIRE",  "POTR5", "POTR5")
cover = c(26.893939,  5.681818,  9.469697, 16.287879,  1.893939, 16.287879,  4.166667, 10.984848, 16.666667, 11.363636, 18.181818,
          13.257576)
df_original = data.frame(plotID, species, cover)

enter image description here

这是预期的输出:

# Intended Output
plotID2 = c( "SUF200001035014", "SUF200001035014", "SUF200001035014", "SUF200001035014", "SUF200001035014", "SUF200046012040",
            "SUF200046012040", "SUF200046012040", "SUF200046012040")
species2 = c("ABBA",  "BEPA",  "PIBA2", "PIMA",  "PIRE",  "PIBA2", "PIMA",  "PIRE",  "POTR5")
cover2 = c(26.893939,  5.681818,  9.469697, 16.287879,  1.893939, 20.454546, 18.651515, 11.363636, 31.439394)
df_intended_output = data.frame(plotID2, species2, cover2)

enter image description here

最佳答案

轻松使用聚合

aggregate(cover~species+plotID, data=df_original, FUN=sum) 

使用data.table更容易

as.data.table(df_original)[, sum(cover), by = .(plotID, species)]

关于r - 如何根据多个条件对行求和 - R?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28923168/

相关文章:

mysql - 每个月每个唯一 ID 的累计总和

python - 高效地迭代 pandas.DataFrame,同时一次访问多个索引行

python - 如何从python中的多个文件夹中读取文件

r - 如何仅在没有 NA 的情况下检查一组变量中是否存在某个值?

r - 如何在两个数据框列表上应用函数?

r - 按特定顺序合并两个矩阵

r - 一列的唯一值对应另一列的唯一值

r - 使用 scatterpie 或 ggforce 制作多个饼图

sql-server - 我怎样才能像这样查询总和

python - 如何在df.groupby之后将数据框列值作为窗口大小传递?