我想在 R 数据帧的同一列中将值四舍五入到不同的小数位,可以吗?
I want to round values to different decimals places within the same column of R dataframe can it be done?
我有一个看起来有点像这样的数据框:
Analyte Value
Fe 60.3203
Sio2 2.3003
As 0.5564
我想根据值将值列四舍五入到不同的小数位。也就是说,如果该值 > 1 那么我想显示 2 位小数,如果它 < 1 我想四舍五入到 3 位小数
是否可以将其应用于 R 数据框?
我试过:
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)))
我也尝试了上述两个选项的一些变体,但我总是以整列四舍五入到相同的小数位数结束。
我怀疑在呈现 table?
时这种类型更适合某种图形类型的功能
如果是为了显示目的,可以使用sprintf
来控制小数位:
with(df, ifelse(Value > 1, sprintf("%.3f",Value), sprintf("%.2f",Value)))
#[1] "60.320" "2.300" "0.56"
您接近 format
和 round
,您可以:
with(df, trimws(ifelse(Value > 1, format(round(Value, 3), nsmall = 3),
format(round(Value, 2), nsmall = 2))))
我有一个看起来有点像这样的数据框:
Analyte Value
Fe 60.3203
Sio2 2.3003
As 0.5564
我想根据值将值列四舍五入到不同的小数位。也就是说,如果该值 > 1 那么我想显示 2 位小数,如果它 < 1 我想四舍五入到 3 位小数 是否可以将其应用于 R 数据框?
我试过:
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)))
我也尝试了上述两个选项的一些变体,但我总是以整列四舍五入到相同的小数位数结束。
我怀疑在呈现 table?
时这种类型更适合某种图形类型的功能如果是为了显示目的,可以使用sprintf
来控制小数位:
with(df, ifelse(Value > 1, sprintf("%.3f",Value), sprintf("%.2f",Value)))
#[1] "60.320" "2.300" "0.56"
您接近 format
和 round
,您可以:
with(df, trimws(ifelse(Value > 1, format(round(Value, 3), nsmall = 3),
format(round(Value, 2), nsmall = 2))))