r - Case_when 改变值我不想改变
问题描述
我正在使用 case_when 函数在 R 中重新编码一个变量,根据一组规则只更改一些值,但是当我打印新变量时,我没有包含在 case_when 函数中的值也会发生变化。
我要重新编码的变量是具有字符和数值的混合变量。我正在使用 case_when 函数将字符值转换为数字。情况是,当我打印新变量时(期望得到旧数值加上新数值),旧数值也发生了变化。
下面是我正在使用的代码..
pobgit_p %>%
mutate(P57_2_num = case_when(
P57_2 == "No" ~ 0,
P57_2 == "NS" ~ 0,
P57_2 == "NC" ~ 0,
))
我不明白我做错了什么。
提前谢谢了 :)
解决方案
也许添加TRUE ~ as.numeric(P57_2_num)
会有所帮助?
请花点时间学习如何提供一个适当的可重现示例。这样做将有助于我们提供更准确地反映您的数据的解决方案。此外,更有经验的用户可能会发现您可能不知道的其他潜在问题。
library(tibble)
library(dplyr)
pobgit_p <- tibble(
P57_2_num = c("No",
"NS",
"NC",
10,
20,
100)
)
pobgit_p %>%
mutate(P57_2_num = case_when(
P57_2_num == "No" ~ 0,
P57_2_num == "NS" ~ 0,
P57_2_num == "NC" ~ 0,
TRUE ~ as.numeric(P57_2_num)
))
输出:
# A tibble: 6 x 1
P57_2_num
<dbl>
1 0
2 0
3 0
4 10
5 20
6 100
由reprex 包于 2020 年 11 月 13 日创建(v0.3.0)
原表:
# A tibble: 6 x 1
P57_2_num
<chr>
1 No
2 NS
3 NC
4 10
5 20
6 100
推荐阅读
- javascript - 向下滚动时如何隐藏搜索栏以及使用 react-native 向上滚动时如何显示它?
- ansible - Ansible 总是对 localhost 有 SSH 错误?
- ios - 无法将不可变值作为 inout 参数传递:“CGLayerGetContext”是一个函数
- angular - 在 IE 11 中工作 - 当我在 Angular datepicker 中输入 5/1/18 时,它会将日期更改为 5/1/1918。在日期结束时出现错误的年份
- jenkins - 并行运行后继续使用节点
- amazon-web-services - Lambda 函数不一致地缺少 DynamoDB 触发器
- sql - 如何在 SQL Server 中根据时间获取回历月份?
- java - 如何处理具有相同xpath的多个对象的动态变化xpath
- kendo-grid - Kendo.Grid 在“创建”操作时不会向控制器发送一些数据
- python - 使用 ib_sync 使用 Python 获取许多实时股票报价