2017-01-24 65 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!有趣的是,看看不同的人是如何工作的,我希望有一种方式来标记负面的人,他们吸引或至少从他们的帮助中删除他们。 –