2017-11-08 9 views
0

lse列の連続する値を比較するデータフレームがあります。 lse 0の値は1が続いた場合、私はNA 入力として0値でlseEND_DATEを入れたい:連続した列のセル値を比較し、他の列の値を置き換えます。

END_DATE  lse 
2016-01-20  0 
2015-08-16  1 

予想される出力:

END_DATE  lse 
     NA  0 
2015-08-16  1 

私は以下のコードを試してみましたが、それは動作していないと何かエラーをスローされていません。

for (i in length(loan_test1$lse)){ 
    if (length(loan_test1$lse) == 0 & length(loan_test1$lse)+1 == 1) { 
    loan_test1$END_DATE[i] <- "NA" 
    } 
} 

誰でもお手伝いできますか?

答えて

1
library(lubridate) 
library(tidyverse) 
df <- data.frame(END_DATE = seq.Date(from = (today()-99),to = today(),by=1),lse = sample(c(0,1), 100, replace = TRUE)) 

df <- df %>% mutate(leadlse = lead(lse)) 

condition <- df$lse == 0 & df$leadlse ==1 

df$END_DATE[condition] = NA 

df <- df %>% select(-leadlse) 
df 

以上単に:

df <- data.frame(END_DATE = seq.Date(from = (today()-99),to = today(),by=1),lse = sample(c(0,1), 100, replace = TRUE)) 

df$END_DATE[(df$lse == 0 & lead(df$lse) == 1)] <- NA 
関連する問題