簡體   English   中英

根據數據框中的特定條件添加FLAG

[英]Add FLAG based on certain condition in the data frame

 df <- 
 ID    AMT    
  1    NA     
  1    50    
  1    NA
  2    NA
  2    NA
  2    50


 dfout <- 
 ID    AMT   FLAG  
  1    NA     1
  1    50     0 
  1    NA     0
  2    NA     1 
  2    NA     1
  2    50     0

對於每個主題ID,當AMT為NA時添加FLAG==1 ,直到存在AMT> 0的行,然后該主題的其余FLAG為0。例如,對於FLAG==1以上'df'的主題FLAG==1當AMT為NA時,應該為第一行給出。 但是,盡管同一主題的最后一行是NA,但FLAG應該為零,因為我們在此之前達到AMT> 0。

由於我有大量數據集,因此如何在R中執行此操作。

這是可以完成的一種方法:

library(tidyverse)

df <- tribble(
~ID,  ~AMT,    
1,    NA,     
1,    50,    
1,    NA,
2,    NA,
2,    NA,
2,    50)

df %>% 
  rownames_to_column() %>%
  group_by(ID) %>%
  mutate(x = as.numeric(rowname < min(rowname[!is.na(AMT)])))

#> # A tibble: 6 x 4
#> # Groups:   ID [2]
#>   rowname    ID   AMT     x
#>     <chr> <dbl> <dbl> <dbl>
#> 1       1     1    NA     1
#> 2       2     1    50     0
#> 3       3     1    NA     0
#> 4       4     2    NA     1
#> 5       5     2    NA     1
#> 6       6     2    50     0

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM