在R中的列选择中计算具有条件的行的平均值

时间:2016-03-31 16:39:09

标签: r mean

我按以下格式列出了不同文章的销售清单:

col <- c("A", "B", "C")
A <- c(1,0,0)
B <- c(0,1,0)
C <- c(0,0,1)
colnames(df) <- c('article','w1', 'w2', 'w3')
df
 article w1 w2 w3
 A       1  0  0
 B       0  1  0
 C       0  0  1

我需要的是创建一个新列来计算行的平均值,但只在行中第一次出现正值后才开始。这意味着如果一行看起来像:

A 0 1 0

算法必须仅考虑最后两个值(1和0)并将值(1 + 0)/ 2 = 0.5放入新列中。最终结果必须如下所示:

 article w1 w2 w3 Mean
 A       1  0  0  0.33
 B       0  1  0   0.5
 C       0  0  1     1

可以,有人告诉我如何做对吗?

非常感谢

2 个答案:

答案 0 :(得分:3)

Desired output: black 将返回which(x > 0)的第一个元素的索引。

x > 0

答案 1 :(得分:1)

这是另一个选项

library(matrixStats)
df$Mean <- rowMeans((NA^(!rowCumsums(as.matrix(df[-1]))))*df[-1], 
                                  na.rm=TRUE)
df$Mean
#[1] 0.3333333 0.5000000 1.0000000