计算row表示每一行中不同列的均值

时间:2019-06-03 10:43:32

标签: r dataframe mean

我有一个像这样的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)

startend表示rowMeans中应包括的列数。即第一行:均值从x2到x6;第二行:从x1到x3的平均值,依此类推

我尝试了这个但没有成功:

df$means <- rowMeans(df[,df$X7:df$X8]) 

1 个答案:

答案 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列对每行进行子集处理,然后计算平均值。