我有一个像这样的DF:
df <- read.table(text = "x1 x2 x3 x4 x5 x6 start end
1 2 2 1 2 3 2 6
2 3 2 5 7 9 1 3
1 9 12 6 1 1 3 6 ", header = TRUE)
start
和end
表示rowMeans
中应包括的列数。即第一行:均值从x2到x6;第二行:从x1到x3的平均值,依此类推
我尝试了这个但没有成功:
df$means <- rowMeans(df[,df$X7:df$X8])
答案 0 :(得分:3)
使用apply
的一种方式:
apply(df, 1, function(x) mean(as.numeric(x[x[7]:x[8]], na.rm = TRUE)))
#[1] 2.000000 2.333333 5.000000
一些描述。 apply
将遍历每一行。变量x
代表每一行。因此,我们告诉R根据第7列和第8列对每行进行子集处理,然后计算平均值。