Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 将累计和的最大值提取到新列中_R_Dataframe - Fatal编程技术网

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

R 将累计和的最大值提取到新列中,r,dataframe,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与base R类似: lapply(testdf, function(x) { x[diff(x) > 0] <- 0 x }) 假设一个0应该重置你的累计总和是正确的吗?谢谢,非常简单和好。您可以添加一个更灵活的附加到旧数据帧的解决方案吗?我需

数据集示例:

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与base R类似:

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

假设一个0应该重置你的累计总和是正确的吗?谢谢,非常简单和好。您可以添加一个更灵活的附加到旧数据帧的解决方案吗?我需要附加很多列。您也可以使用
tidyverse
语法
testdf%>%dplyr::mutate_all(funs(max=replace(,diff(.)>0,0))
cbind
非常灵活。我仍然使用旧的data.frame
cbind(testdf,
。您可以在那里对testdf进行子集,以使用您想要的任何列,甚至添加更多的data.frames。
lapply(testdf, function(x) {
  x[diff(x) > 0] <- 0
  x
})
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