如何在R语言中将字符向量的数值格式化为两位小数?
在R语言中处理字符向量的数值保留两位小数
给定混合数值型字符串和非数值字符串的字符向量:
x = c("0.857138", "1", "0.5", "not limiting", "0.1", "0.233333333333333", "1", "0.333333333333333", "1", "1", "0.1", "0.65", "1", "1", "0.6", "0.25", "1", "1", "0.25", "0.6", "1", "1", "0.6")
可以通过以下方式仅对数值型元素保留两位小数,非数值元素保持原样:
方法一:强制保留两位小数(含末尾零)
使用ifelse结合sprintf实现格式化:
processed_x <- ifelse(!is.na(as.numeric(x)), sprintf("%.2f", as.numeric(x)), x)
运行后结果:
> processed_x [1] "0.86" "1.00" "0.50" "not limiting" "0.10" [6] "0.23" "1.00" "0.33" "1.00" "1.00" [11] "0.10" "0.65" "1.00" "1.00" "0.60" [16] "0.25" "1.00" "1.00" "0.25" "0.60" [21] "1.00" "1.00" "0.60"
方法二:保留两位小数但去除末尾无意义的零
如果希望整数或一位小数的数值不显示末尾零(比如"1"保持为"1","0.5"保持为"0.5"),可以用formatC:
processed_x <- ifelse(!is.na(as.numeric(x)), formatC(as.numeric(x), format = "f", digits = 2, drop0trailing = TRUE), x)
运行后结果:
> processed_x [1] "0.86" "1" "0.5" "not limiting" "0.1" [6] "0.23" "1" "0.33" "1" "1" [11] "0.1" "0.65" "1" "1" "0.6" [16] "0.25" "1" "1" "0.25" "0.6" [21] "1" "1" "0.6"
内容的提问来源于stack exchange,提问作者confusedindividual
相关产品推荐
相关产品推荐

