使用R中的整数计算到第一个小数点

使用R中的整数计算到第一个小数点,r,integer,decimal,tapply,R,Integer,Decimal,Tapply,我想用整数计算到第一个小数点,但不管我做什么,它都是四舍五入的,不能给我想要的精度。我花了很多时间查找,似乎很多像我这样的初学者都会有问题,但我找不到一个简单的解决办法 这是我的密码: type = c('A', 'B', 'C', 'D', 'C', 'B') count = c(1, 4, 8, 4, 2, 4) df1 = data.frame(type, count) type2 = c('A', 'B', 'C', 'D', 'B', 'C', 'D', 'A') count2 =

我想用整数计算到第一个小数点,但不管我做什么,它都是四舍五入的,不能给我想要的精度。我花了很多时间查找,似乎很多像我这样的初学者都会有问题,但我找不到一个简单的解决办法

这是我的密码:

type = c('A', 'B', 'C', 'D', 'C', 'B')
count = c(1, 4, 8, 4, 2, 4)
df1 = data.frame(type, count)

type2 = c('A', 'B', 'C', 'D', 'B', 'C', 'D', 'A')
count2 = c(3, 7, 1, 4, 8, 4, 5, 2)
df2 = data.frame(type2, count2)

sum1 <- tapply(df1$count, type, sum)
sum2 <- tapply(df2$count2, type2, sum)

round(sum1/sum2*100.0, 1) # Want to calculate it to the 1st decimal
我想要这个:

   A     B      C     D 
20.0  53.3  200.0  44.4

我提前感谢您的帮助。

将要显示的位数增加到任意3位数以上,然后您将看到回合的影响。此处数字表示要显示的有效位数

options(digits = 10)
round(sum1/sum2*100, 1)

#    A     B     C     D 
# 20.0  53.3 200.0  44.4 


round(sum1/sum2*100, 2)

#    A      B      C      D 
# 20.00  53.33 200.00  44.44 

将要显示的位数增加到任意数字,超过3,您将看到舍入的影响。此处数字表示要显示的有效位数

options(digits = 10)
round(sum1/sum2*100, 1)

#    A     B     C     D 
# 20.0  53.3 200.0  44.4 


round(sum1/sum2*100, 2)

#    A      B      C      D 
# 20.00  53.33 200.00  44.44 

似乎您的四舍五入结果最多应该有4个有效数字。这是可以使用options命令指定的内容。这允许您更改R计算结果的方式


在您的情况下,在四舍五入步骤之前运行optionsdigits=4可能会解决问题。

似乎您的四舍五入结果最多应该有4个有效数字。这是可以使用options命令指定的内容。这允许您更改R计算结果的方式


在您的情况下,在取整步骤之前运行optionsdigits=4可能会解决问题。

在控制台中运行optionsdigits=4,然后重试。再次感谢您,成功了!我尝试过使用选项,但不知何故,我假设数字表示小数,并且正在使用optionsdigits=1,这当然没有解决问题。在控制台中运行optionsdigits=4,然后重试。再次感谢您,成功了!我尝试过使用选项,但不知何故,我假设数字表示小数,并使用optionsdigits=1,这当然不能解决问题。谢谢!正如你所说,我添加了optionsdigits=4,这就成功了。在我的情况下,正如您最初告诉我的那样,数字=4就足够了。谢谢!正如你所说,我添加了optionsdigits=4,这就成功了。在我的例子中,正如您最初告诉我的那样,数字=4就足够了。