我按以下格式列出了不同文章的销售清单:
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
可以,有人告诉我如何做对吗?
非常感谢
答案 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