为数据框添加一个场合标志

时间:2018-05-03 23:54:47

标签: r dataframe

对于每个人,我想在数量大于零时为我的数据框添加一个场合标志。我需要这个标志进行进一步的计算。这就是我想要实现的目标。

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?

中实现这一目标

2 个答案:

答案 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)))