对 R 中单列的重叠行求和
Summing overlapping rows from a single column in R
我试图对 R 中多行同一列的值求和,但每一行都属于所需输出行中的 1 或 2 行,因此我一直在努力使用 ddply
或 tapply
成功。
我有三角横断面数据,其中在每个顶点(点 1、3 和 5)和沿每条边(点 2、4 和 6)取样本点 half-way。我试图总结沿三角形每一边收集的数据:即腿 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)
在此先感谢您的帮助,如果问题标题措辞不当,我深表歉意,我不确定如何准确描述这个问题!
使用 dplyr
和 reshape2
:
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()
我试图对 R 中多行同一列的值求和,但每一行都属于所需输出行中的 1 或 2 行,因此我一直在努力使用 ddply
或 tapply
成功。
我有三角横断面数据,其中在每个顶点(点 1、3 和 5)和沿每条边(点 2、4 和 6)取样本点 half-way。我试图总结沿三角形每一边收集的数据:即腿 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)
在此先感谢您的帮助,如果问题标题措辞不当,我深表歉意,我不确定如何准确描述这个问题!
使用 dplyr
和 reshape2
:
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()