【发布时间】:2019-05-17 22:50:11
【问题描述】:
我对 R 还很陌生,正在尝试清理数据。我正在使用 case_when 将 Yes、No 和 Unknown 分配给变量。我想分配相同的变量 No 和 Unknown,如果它在第一个语句中被分配为 Yes 并且其他语句为真或假。
这就是我所拥有的:
ID col1 col2
1 Ball a
2 NA c
3 Bat b
这就是我想要达到的目标:
ID col1 col2 x
1 Ball a No
2 NA c Yes
3 Bat b Unknown
mutate(x = case_when(
is.na(col1) == TRUE ~ "Yes",
!is.na(col1) == TRUE & (col2 %in% c("a", "b")|
(col2 == "YES" & x == "Unknown" ) == TRUE ) ~ "No"),
TRUE ~ "Unknown"
))
基本上我想使用第一个 case_when 中 x 的结果并在第二行代码中使用它。如果 col1 为 NA,我基本上希望我的列 x 为“是”。如果 col1 没有丢失并且 (col2 %in% c("a", "b") or col1 == "Bat" and x = "Yes") 然后设置 x = "No"
有没有办法让它工作。任何帮助表示赞赏。
【问题讨论】:
-
我无法理解您要执行的操作。如果您可以用一两行数据描述一个特定的示例以及您期望的输出,这将有所帮助。
-
另外,测试一个测试是否为真是多余的。你可以写
is.na(col1)而不是is.na(col1) == TRUE,因为第一部分已经等于TRUE。 -
@JonSpring 这是我的表的样子,请参阅上面有问题的更新。如果 col1 是 NA,我基本上希望我的列 x 是 Yes。如果 col1 没有丢失并且 (col2 %in% c("a", "b") or col1 == "Bat" and x = "Yes") 然后设置 x = "No" 。我的问题是如何在 case_when 条件的第二部分中使用第 1 部分中的 x = "Yes" 条件,我不知道该怎么做。