首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >我想把值舍入不同的小数位,在同一列的R数据中,可以这样做吗?

我想把值舍入不同的小数位,在同一列的R数据中,可以这样做吗?
EN

Stack Overflow用户
提问于 2020-10-16 06:06:01
回答 1查看 220关注 0票数 0

我有一个看起来有点像这样的数据文件:

代码语言:javascript
运行
复制
Analyte  Value     
Fe       60.3203 
Sio2     2.3003 
As       0.5564

我希望将value列四舍五入到不同的小数位置,这取决于它的值。也就是说,如果值>1,那么我想显示2小数位,如果它是<1,我想把小数位圈到小数点3位,那么可以将它应用到R数据吗?

我试过:

代码语言:javascript
运行
复制
df$value <- if_else(df$value >1.0, round(df$value, digits =3), round(df$value, digits =2))

代码语言:javascript
运行
复制
df$value <- if_else(df$value >1.0, format(round(df$value, nsmall =3)), format(round(df$value, nsmall =2)))

我还尝试了上述两个选项的几个变体,但最后我总是将整列舍入到相同的小数位数。

我怀疑这种类型更适合在显示表时使用某种图形类型的特性?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-10-16 06:13:07

如果是为了显示目的,可以使用sprintf来控制小数位:

代码语言:javascript
运行
复制
with(df, ifelse(Value > 1, sprintf("%.3f",Value), sprintf("%.2f",Value)))
#[1] "60.320" "2.300"  "0.56" 

您与formatround关系密切,您可以:

代码语言:javascript
运行
复制
with(df, trimws(ifelse(Value > 1, format(round(Value, 3), nsmall = 3), 
                                  format(round(Value, 2), nsmall = 2))))
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64383727

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档