对于每个人,我想在数量大于零时为我的数据框添加一个场合标志。我需要这个标志进行进一步的计算。这就是我想要实现的目标。
dfin <-
ID AMT
1 50
1 NA
1 10
1 NA
2 15
2 NA
2 NA
3 10
3 15
dfout <-
ID AMT FLAG
1 50 1
1 NA 1
1 10 2
1 NA 2
2 15 1
2 NA 1
2 NA 1
3 10 1
3 15 2
我如何在R?
中实现这一目标答案 0 :(得分:4)
您可以测试哪些值不是NA并计算累积总和。
dfout = dfin
dfout$FLAG = cumsum(!is.na(dfin$AMT))
dfout
ID AMT FLAG
1 1 50 1
2 1 NA 1
3 1 10 2
4 1 NA 2
5 2 15 3
6 2 NA 3
7 2 NA 3
8 3 10 4
答案 1 :(得分:2)
因为我改变了我想要的输出。我在这里根据@ G5W提供的答案回答问题,以便ID
library(dplyr)
dfout <- dfin %>%
group_by(ID) %>%
mutate(FLAG = cumsum(!is.na(AMT)))