R按行计算列中特定出现次数,并填充显示增量出现次数的列
我想计算一列中特定实例的数量,并填充一列,以显示行增长。R按行计算列中特定出现次数,并填充显示增量出现次数的列,r,R,我想计算一列中特定实例的数量,并填充一列,以显示行增长。 在下面的示例中,我想计算列TrueFalse中TRUEs的数量,并将其插入(或创建)列TRUES。换句话说,当TrueFalse==TRUE时,TRUES列将递增。这同样适用于列false 当ID发生变化时,应重新开始计数 data<-read.table(text=" ID TrueFalse 1 NA 1 TRUE 1 TRUE 1
在下面的示例中,我想计算列
TrueFalse
中TRUE
s的数量,并将其插入(或创建)列TRUES
。换句话说,当TrueFalse==TRUE
时,TRUES
列将递增。这同样适用于列false
当
ID
发生变化时,应重新开始计数
data<-read.table(text="
ID TrueFalse
1 NA
1 TRUE
1 TRUE
1 NA
1 FALSE
1 FALSE
2 TRUE
2 FALSE
2 NA
2 NA
2 FALSE
2 TRUE
2 FALSE",header=T)
result:
ID TrueFalse TRUES FALSES
1 NA 0 0
1 TRUE 1 0
1 TRUE 2 0
1 NA 2 0
1 FALSE 2 1
1 FALSE 2 2
2 TRUE 1 0
2 FALSE 1 1
2 NA 1 1
2 NA 1 1
2 FALSE 1 2
2 TRUE 2 2
2 FALSE 2 3
数据我们可以替换
NA
值,并使用cumsum
进行计数:
library(dplyr)
data %>%
group_by(ID) %>%
mutate(Trues = cumsum(replace(TrueFalse, is.na(TrueFalse), 0)),
Falses = cumsum(!replace(TrueFalse, is.na(TrueFalse), TRUE)))
# ID TrueFalse Trues Falses
# <int> <lgl> <dbl> <int>
# 1 1 NA 0 0
# 2 1 TRUE 1 0
# 3 1 TRUE 2 0
# 4 1 NA 2 0
# 5 1 FALSE 2 1
# 6 1 FALSE 2 2
# 7 2 TRUE 1 0
# 8 2 FALSE 1 1
# 9 2 NA 1 1
#10 2 NA 1 1
#11 2 FALSE 1 2
#12 2 TRUE 2 2
#13 2 FALSE 2 3
data %>%
group_by(ID) %>%
mutate(Trues = cumsum(replace(TrueFalse, is.na(TrueFalse), '') == 'TRUE'),
Falses = cumsum(replace(TrueFalse, is.na(TrueFalse), '') == 'FALSE'))