为什么这个 case_when 命令对所有情况执行该命令?
第 1 列中的 4 代表表示“其他”的答案。第 2 列代表“其他”是什么。我希望第 1 列中没有答案 4 的所有内容在第 2 列中具有 NA。使用 case_when 不会给出我期望的结果。
以下数据
col1 col2
1 "a"
4 "c"
4 NA
3 NA
我运行
df <- df %>%
mutate(col2 = case_when(col1 != 4 ~ NA))
:并期望:
col1 col2
1 NA
4 "c"
4 NA
3 NA
但我得到
col1 col2
1 NA
4 NA
4 NA
3 NA
我做错了什么?
4 in column 1 represents an answer that means "other". Column 2 represents what that "other" is. I want everything that doesn't have answer 4 in column 1 to have NA in column 2. Using case_when does not give the result I expect.
I have this data
col1 col2
1 "a"
4 "c"
4 NA
3 NA
I run:
df <- df %>%
mutate(col2 = case_when(col1 != 4 ~ NA))
And expect:
col1 col2
1 NA
4 "c"
4 NA
3 NA
But I get
col1 col2
1 NA
4 NA
4 NA
3 NA
What did I do wrong?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
问题是您的
case_when
没有col2 == 4
的情况。因此返回 NA。根据文档:要解决此问题,请通过
TRUE ~ col2
添加默认值到您的 case_when 中:The issue is that your
case_when
has no case forcol2 == 4
. Therefore NA is returned. According to the docs:To fix that add a default value via
TRUE ~ col2
to your case_when: