我已经搜索过,但找不到任何可以回答这个问题的东西-如果以前已经回答过,对不起!
我有行值累积增加的数据。我希望能够检测到这些值在哪些列中增加,并输出相同大小的新数据帧,当值更改时为1,而值不变则为0。
示例数据-
a<- c(0,0,0,0,0)
b<- c(1,0,0,1,0)
c<- c(2,1,0,1,1)
d<- c(3,2,0,1,2)
e<- c(4,2,1,1,2)
df<- data.frame(a,b,c,d,e)
df
a b c d e
1 0 1 2 3 4
2 0 0 1 2 2
3 0 0 0 0 1
4 0 1 1 1 1
5 0 0 1 2 2
期望的输出
ad bd cd dd ed
1 0 1 1 1 1
2 0 0 1 1 0
3 0 0 0 0 1
4 0 1 0 0 0
5 0 0 1 1 0
我已经尝试过以下思路:
dfNew<- lapply(ifelse(df>=identical[,c(x)], 1, 0))
但这显然是行不通的(我有点菜鸟)。很感谢任何形式的帮助!
如果这是为了获得行明智的差异,则可以使用rowDiffs
frommatrixStats
library(matrixStats)
`colnames<-`(cbind(df[1],rowDiffs(as.matrix(df))),
paste0(names(df), "d"))
# ad bd cd dd ed
#1 0 1 1 1 1
#2 0 0 1 1 0
#3 0 0 0 0 1
#4 0 1 0 0 0
#5 0 0 1 1 0
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句