汇总R

时间:2015-07-03 13:24:33

标签: r sum plyr tapply

我试图在R中的多行中对同一列中的值求和,但每行都落在所需输出行的1或2中,因此我一直在努力使用ddplytapply成功。

我有三角形横断面数据,其中采样点在每个顶点(点1,3和5)和沿着每个边缘的中途(点2,4和6)。我试图总结沿三角形每边收集的数据:即腿A是点1 + 2 + 3的总和;腿B是点3 + 4 + 5的总和;腿C是点5 + 6 + 1的总和。

我的数据格式为:

Transect <- c(rep("T001",6),rep("T002",6),rep("T003",6))
Point <- rep(seq(1,6,1),3)
Area <- c(rep(3000, 8), 2500, 2000, rep(3000,4), 1000, rep(3000,3))
df <- data.frame(Transect, Point, Area)

所需的输出是:

Transect2 <- c(rep("T001",3),rep("T002",3),rep("T003",3))
Leg <- rep(c("A", "B", "C"),3)
Total.Area <- c(rep(9000,3), 8500, 7500, 9000, 7000, 7000, 9000)
df.out <- data.frame(Transect2, Leg, Total.Area)

先谢谢你的帮助,如果问题标题措辞不当,我会道歉,我不确定如何准确描述这个问题!

1 个答案:

答案 0 :(得分:2)

使用dplyrreshape2

library(dplyr)
library(reshape2)

df %>% group_by(Transect) %>%
       summarise(A = sum(Area[Point %in% c(1, 2, 3)]),
                 B = sum(Area[Point %in% c(3, 4, 5)]),
                 C = sum(Area[Point %in% c(5, 6, 1)])) %>%
       melt()