2017-01-24 64 views
0

我有這個代碼運行良好,但我怎樣才能將3行代碼合併爲1?結合dyplr標準代碼?

基本上我需要創建這些額外的幫手QC列,我也將其他SAS代碼(其他人擁有)翻譯成R,目標是翻譯它,而不是質疑它。

當滿足條件時,目標是在數據集的末尾添加3個額外的N,C和K列。

TEST <- FINAL %>% filter(is.na(NAME)) %>% mutate(N = 1) 

TEST <- FINAL %>% filter(is.na(COUNTRY)) %>% mutate(C = 1) 

TEST <- FINAL %>% filter(CATEGORY == 'T' & (BEGN_DT <= 20170302 & END_DT >= 20170312)) %>% mutate(K = 1) 
+0

在mutate中使用'ifelse'。 – alistaire

+0

你能舉個例子嗎? –

+2

[你可以嗎?](http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example#5963610) – alistaire

回答

1

條件mutate仍然a work-in-progressdplyr,但它可以做到:

mtcars %>% 
    mutate(x = case_when(.$cyl == 6 ~ 1)) %>% 
    mutate(y = case_when(.$am == 1 ~ 9)) %>% 
    mutate(z = case_when(is.na(.$x) ~ 5)) 
0

我們可以做到這一點沒有filter荷蘭國際集團

FINAL %>% 
    mutate(N = as.integer(is.na(NAME)), 
      C = as.integer(is.na(COUNTRY)), 
      K = as.integer(CATEGORY == 'T' & (BEGN_DT <= 20170302 & END_DT >= 20170312))) 

這將導致與1二進制列對應於條件的TRUE值和對於其他情況的0

+1

謝謝Ya'All!有趣的是,看看不同的人是如何工作的,我希望有一種方式來標記負面的人,他們吸引或至少從他們的幫助中刪除他們。 –