将累积和的最大值提取到新列中

时间:2017-05-02 10:12:08

标签: r dataframe

数据集样本:

testdf <- data.frame(risk_11111 = c(0,0,1,2,3,0,1,2,3,4,0), risk_11112 = c(0,0,1,2,3,0,1,2,0,1,0))

我需要输出数据集,其中包含新列,其中只保留累积和的最大值:

testdf <- data.frame(risk_11111 = c(0,0,1,2,3,0,1,2,3,4,0), 
                           risk_11111_max = c(0,0,0,0,3,0,0,0,0,4,0),
                           risk_11112 = c(0,0,1,2,3,0,1,2,0,1,0),
                           risk_11112_max = c(0,0,0,0,3,0,0,2,0,1,0))

我猜测矢量colwise的一些逻辑subseting与应用和提取位置索引的最大值,并变异为新的变量。
我不知道如何为新变量提取值   谢谢

1 个答案:

答案 0 :(得分:3)

这样的基础R:

lapply(testdf, function(x) {
  x[diff(x) > 0] <- 0
  x
})

并拥有一个data.frame:

dfout <- cbind(testdf, lapply(testdf, function(x) {
  x[diff(x) > 0] <- 0
  x
}))
names(dfout) <- c(names(testdf), 'risk_1111_max', 'risk_1112_max')

输出:

   risk_11111 risk_11112 risk_1111_max risk_1112_max
1           0          0             0             0
2           0          0             0             0
3           1          1             0             0
4           2          2             0             0
5           3          3             3             3
6           0          0             0             0
7           1          1             0             0
8           2          2             0             2
9           3          0             0             0
10          4          1             4             1
11          0          0             0             0