【发布时间】:2021-04-30 20:34:33
【问题描述】:
新R-Bie,
我正在尝试从我的数据框df 中清除 3 列数据。这些列由数值元素组成,其值范围为 0.19、687.00、49405、107.440、13764.000、1.740。出于本示例的目的,我将在下面创建df。目标是将这行代码实现到 dplyr 中的 mutate 函数中,以便从 data.frame 中清除一列数据。
例子:
df <- c(1.560, 1.790, 3456.000, 1.0700, 0.16000, 1.347, 4.200)
我一直在尝试删除元素末尾的 0,使它们看起来都像这样
df <- c(1.56, 1.79, 3456, 1.07, 0.16, 1.347, 4.20)
我可以通过运行下面的代码行来部分实现我想要的结果:
signif(df[1], 5)
signif(df[2], 5)
signif(df[3], 5)
signif(df[4], 5)
signif(df[5], 5)
signif(df[6], 5)
signif(df[7], 5)
使用 df[7] 元素 4.200 返回 4.2
虽然我必须一个一个地做这个,否则如果我这样做:signif(df[1:6], 5),我得到这个向量返回1.560 1.790 3456.000 1.070 0.160 1.347 4.200
- 我还尝试使用正则表达式来提取对象末尾的 0 模式,但我使用的任何量词或表达式似乎都会删除所有尾随零。
我正在考虑删除最后一个数字(如果它是 0),保留
1.347之类的数字,但要清理列的其余部分,然后删除".00"的完全匹配,以获得一个完整的整数,留下 @987654333 @ 和“4.20”。 当使用"(\\.000)$"匹配并从中删除 0(例如4128.000, 13764.000)时,其他元素也会删除它们的 0(例如4.2、0.9),而不是留下4.200和0.900,其中我想提取4.20和0.90。 使用"(0)$"也不起作用,我已经尝试了多种正则表达式变体来实现这一点......任何 ehlp 将不胜感激。
【问题讨论】:
标签: r significant-digits