在R中更改数据框列的小数位数字

5

有人发布了一些关于显示特定位数数字的问题,但仅适用于单个值或向量,因此希望有人可以帮助我。

我有一个包含多个列的数据框,并希望在其中一个列中将所有值显示为两位小数。我已经尝试过 round()format()options(digits),但都没有在该列(数值)上起作用。我想知道是否有一种方法可以在不将列转换为向量并将所有内容粘合在一起的情况下完成此操作。

非常感谢!


1
你能展示一下你所尝试过的代码吗? - user1477388
很不幸,当它没有起作用时,我把它全部删除了.. :( - Kristina
1个回答

11

以下是如何使用R中预装的cars数据框来执行此操作的示例。

首先,我将添加一些可变性,以便我们具有带小数位的数字:

data=cars+runif(nrow(cars))

接着,要仅将单个列(在这种情况下为 dist 列)四舍五入到小数点后两位:

data[,'dist']=round(data[,'dist'],2)

如果您的数据是整数,则可以使用以下方法保证所有值都有2位小数:

cars[,'dist']=format(round(cars[,'dist'],2),nsmall=2)

谢谢CephBirk,我能看到其中的逻辑,但很遗憾它没起作用。问题是我实际上在将四位数(例如8000)除以100得到80.00(这是一个十进制时间测量),所以某种程度上R不想要显示它。尝试用Excel更改数字,但无法输入到R中,当在列的顶部添加带有两个小数位(例如0.01)的实际数字时,R会将其余部分显示为80.00,但一旦删除0.01,R就跳回了80。恰好知道一种方法只是在第二个数字后面加一个点吗? - Kristina

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接