Вычислить до первого десятичного знака, используя целые числа в R - PullRequest
1 голос
/ 20 июня 2020

Я хотел бы вычислить до первого десятичного знака, используя целые числа, но что бы я ни делал, оно округляется и не дает мне нужной точности. Я потратил много времени на поиски, и мне кажется, что у многих новичков, вроде меня, возникнут проблемы, но я не могу найти решение того, что можно было бы легко сделать.

Вот мои коды:

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  53 200  44

и хочу это:

   A     B      C     D 
20.0  53.3  200.0  44.4

Я заранее благодарен за вашу помощь.

Ответы [ 2 ]

2 голосов
/ 20 июня 2020

Похоже, ваш округленный результат должен состоять максимум из 4 значащих цифр. Это то, что вы можете указать с помощью команды options. Это позволяет вам изменить способ вычисления результатов R.

В вашем случае запуск options(digits = 4) перед шагом округления, вероятно, решит проблему.

1 голос
/ 20 июня 2020

Увеличьте количество отображаемых цифр более 3 до любого числа, и тогда вы увидите влияние round. Здесь digits представляет количество отображаемых значащих цифр.

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 
...