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.framecbind(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