使用 NA 转换和舍入数值变量

Converting and Rounding Numeric Variables with NAs

提问人:e. erhan 提问时间:8/4/2023 最后编辑:e. erhan 更新时间:8/4/2023 访问量:28

问:

我正在使用一个名为 的数据集,它是我从 Excel 导入的。在数据集中的变量中,我需要将某些变量转换为数值格式。但是,这些变量确实包含缺失值 (NA)。此外,原始数值的小数点后两位以上,我的目标是将这些数值四舍五入到小数点后两位。这是我所做的:fab_2023

fab_2023 <- fab_2023 %>%
  mutate_at(vars(Total_score_2023:MA_Combined_Social_2021), ~ ifelse(is.na(.), NA, as.numeric(.)))

fab_2023 <- fab_2023 %>%
  mutate_at(vars(Total_score_2023:MA_Combined_Social_2021), ~ ifelse(is.na(.), NA, round(., 2)))

我基本上想将所有变量从Total_score_2023变量转换为MA_Combined_Social变量到数值变量,并四舍五入到小数点后两位。当我这样做时,似乎它实际上确实以我想要的方式转换了数据,但随后我遇到了以下错误消息:

Error in `mutate()`:
! Problem while computing `Total_score_2021 = (structure(function (..., .x = ..1, .y = ..2, . = ..1) ...`.
Caused by error in `round()`:
! non-numeric argument to mathematical function
Run `rlang::last_error()` to see where the error occurred.

如果我做错了什么,你能告诉我吗?谢谢!

r 变量 dplyr 数据整理 mutate

评论

0赞 LMc 8/4/2023
你不需要做. 将返回.尝试。ifelseas.numeric(NA)NAas.numeric(c("3", "2.5", NA))
0赞 MrFlick 8/4/2023
如果您包含一个简单的可重现示例,其中包含可用于测试和验证可能的解决方案的示例输入和所需输出,则更容易为您提供帮助。
0赞 e. erhan 8/4/2023
@LMc请问 3 和 2.5 代表什么?对不起,你的代码不够用!
1赞 LMc 8/4/2023
它们只是数字的字符表示形式。我只是向您展示您不需要有条件地转换它(即)。is.na(.), NA, as.numeric(.)

答:

1赞 LMc 8/4/2023 #1
library(dplyr)

fab_2023 |>
  mutate(across(Total_score_2023:MA_Combined_Social_2021, ~ round(as.numeric(.), 2)))