2015-07-03 41 views
2

我試圖在R中的多行中彙總來自同一列的值,但每行都落入所需輸出行的1或2行,所以我一直在努力使用ddplytapply成功。從R中的單個列中總結重疊的行

我有三角形斷面數據,其中在每個頂點(點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) 

由於,如果問題標題措辭不當,我很抱歉,我不知道如何準確地描述這個問題!

回答

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() 
+0

這工作很漂亮,而且我已經成功地對其進行修改並應用到一系列類似的問題。 '%>%'符號對我來說也是新的,非常有用。謝謝你的幫助! – Andrew

+1

沒有問題,查看[這個cheatsheet](http://www.rstudio.com/wp-content/uploads/2015/02/data-wrangling-cheatsheet.pdf)更多花哨的數據爭奪 – jeremycg