请允许我举一个例子。
将以下数据设想为Excel列:
A1=5 | A2=3 | A3=7 | A4=11 | A5=23 | A6=15 | A7=17
然后B1=1 | B2=4
也C1=3 | C2=7
我想创建一个专栏" D"计算列的平均值" A"使用基于B列和C列的标准。因此,在此示例中D1=(Average of A1 to A3)
基于B1=1
和C1=3
...然后D2=(Average of A4 to A7)
,基于B2=4
和C2=7
。
在Excel上执行此操作的方式是D1 = AVERAGE(INDIRECT(CONCATENATE("A",B1)):INDIRECT(CONCATENATE("A",C1)))
,当然还有D2 = AVERAGE(INDIRECT(CONCATENATE("A",B2)):INDIRECT(CONCATENATE("A",C2)))
所以D1连接将融合" A"用" 1"因为B1=1
和融合" A"用" 3"因为C1=3
与D2相同...... Average(A4:A7)
对于R来说这似乎是不可能的,因为我无法看到如何将数字与列融合以找到特定的单元格,然后将其输入到平均函数以平均特定范围。
我认为回答这个问题会提供许多远远超出这个问题的工具。
修改
谢谢Chi Pak
答案 0 :(得分:0)
vector
个值,例如列A
:
set.seed(1)
A <- sample(1:100,10)
[1] 66 13 27 38 2 37 82 32 45 55
data.frame
个值,例如列B
和C
:
df <- data.frame( B = c(1,4), C = c(3,7))
B C
1 1 3
2 4 7
这有2行2列,列名为B
和C
。
要按列A
和B
指定的行计算列C
中的平均值,请使用sapply
,其中R
等效于快{{ {1}}循环。我使用库for
中的iter
来遍历iterators
的行:
data.frame