这应该不会太难,但是当我在数据框中依赖于数据框中另一列的值的列上运行计算时,我总是遇到问题。这是我的data.frame
stream reach length.km length.m total.sa pools.sa
1 Stream Reach_Code 109 109 1 1
2 Brooks BRK_001 17 14 108 13
3 Brooks BRK_002 15 12 99 9
4 Brooks BRK_003 24 21 94 95
5 Brooks BRK_004 32 29 97 33
6 Brooks BRK_005 27 24 92 79
7 Brooks BRK_006 26 23 95 6
8 Brooks BRK_007 16 13 77 15
9 Brooks BRK_008 29 26 84 26
10 Brooks BRK_009 18 15 87 46
11 Brooks BRK_010 23 20 88 47
12 Brooks BRK_011 22 19 91 40
13 Brooks BRK_012 30 27 98 37
14 Brooks BRK_013 25 22 93 29
19 Buncombe_Hollow BNH_0001 7 4 75 65
20 Buncombe_Hollow BNH_0002 8 5 66 21
21 Buncombe_Hollow BNH_0003 9 6 68 53
22 Buncombe_Hollow BNH_0004 19 16 81 11
23 Buncombe_Hollow BNH_0005 6 3 65 27
24 Buncombe_Hollow BNH_0006 13 10 63 23
25 Buncombe_Hollow BNH_0007 12 9 71 57
我想计算一个列的平均值(比如说length.m
)stream = Brooks
,然后对stream = Buncombe_Hollow
执行相同的操作。我实际上有17个不同的流名称,并计划计算每个流的某些列的平均值。然后我将这些方法存储为向量,并bind
将它们存储到流名称的另一个向量中,因此最终结果是这样的
stream truevalue
1 Brooks 0.9440620
2 Siouxon 0.5858527
3 Speelyai 0.5839844
谢谢!
答案 0 :(得分:4)
尝试使用aggregate:
temp
“list”位的原因是具体命名(数据帧)输出中的列
答案 1 :(得分:2)
开始使用dplyr包。它使得这样的计算快速且易于编写
library(dplyr)
result <- data %>% group_by(stream) %>% summarize(truevalue = mean(length.m))