【问题标题】:I want to round values to different decimals places within the same column of R dataframe can it be done? [duplicate]我想在 R 数据框的同一列中将值四舍五入到不同的小数位,可以吗? [复制]
【发布时间】:2021-01-30 15:43:36
【问题描述】:

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

Analyte  Value     
Fe       60.3203 
Sio2     2.3003 
As       0.5564

我想根据值将值列四舍五入到不同的小数位。也就是说,如果值 > 1 那么我想显示 2 个小数位,如果它是

我试过了:

df$value <- if_else(df$value >1.0, round(df$value, digits =3), round(df$value, digits =2))

df$value <- if_else(df$value >1.0, format(round(df$value, nsmall =3)), format(round(df$value, nsmall =2)))

我也尝试了上述两个选项的一些变体,但我总是最终将整列四舍五入到相同的小数位数。

我怀疑这种类型在展示表格时更适合某种图形类型功能?

【问题讨论】:

    标签: r dataframe rounding


    【解决方案1】:

    如果出于显示目的,您可以使用sprintf 控制小数位:

    with(df, ifelse(Value > 1, sprintf("%.3f",Value), sprintf("%.2f",Value)))
    #[1] "60.320" "2.300"  "0.56" 
    

    你和formatround关系密切,你可以这样做:

    with(df, trimws(ifelse(Value > 1, format(round(Value, 3), nsmall = 3), 
                                      format(round(Value, 2), nsmall = 2))))
    

    【讨论】:

      猜你喜欢
      • 2021-03-26
      • 2014-02-21
      • 1970-01-01
      • 1970-01-01
      • 2016-12-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-27
      相关资源
      最近更新 更多