我写了一个管道,但是没用
newdata_tibble %>%
mutate("Order_TMS_1" = as.character(Order_TMS_1),
"Cbm" = as.double(Cbm)) %>%
gsub(",",".",Cbm) %>%
format(round(.$Cbm:.$CHGW,digits,2),2) %>%
na_if(.$REv_TMS_1:.$GP,0)
我的代码的第2和3行有效。从第四行(gsub)到末尾,我的代码无法正常工作。
在第4行中,我想用逗号替换圆点,但失败。在第5行中,我想更改几列的双精度精度(双精度类型),但也不起作用。最后一行-可以将所有NA替换为零,但也不起作用。对于某些零值,我具有双精度。 0.00或更多(例如0.0000),但我认为在这里并不重要。如何更改代码以使其正常工作?
可重现的示例将有助于更好地理解数据并测试可能的解决方案,但是暂时您可以尝试以下解决方案是否适合您。
library(dplyr)
newdata_tibble %>%
mutate(Order_TMS_1 = as.character(Order_TMS_1),
Cbm = as.double(Cbm),
Cbm = gsub(",",".",Cbm)) %>%
mutate_at(vars(Cbm:CHGW), ~format(round(., 2), 2)) %>%
mutate_at(vars(REv_TMS_1:GP), na_if, 0)
某些步骤可以合并在一起,如果我们在具有as.double/as.numeric
的列上执行,
,它将变为NA。因此,我们需要先替换它,然后转换为double
library(dplyr)
library(stringr)
newdata_tibble %>%
type.convert(as.is = TRUE) %>%
mutate(Cbm = as.numeric(str_replace(Cbm, ",", ".")) %>%
mutate_at(vars(Cbm:CHGW), ~format(round(., 2), 2)) %>%
mutate_at(vars(REv_TMS_1:GP), na_if, 0)