Сводная функция Ошибка округления в r?
У меня есть 16968 строк данных (причины для точности будут объяснены ниже). Я проверяю, действительно ли текущая переменная (данные $Ob) считает каждую строку в последовательном порядке (данные первой строки $ Ob равны 1... данные последней строки $ Ob равны 16968 и для каждой промежуточной строки.
Когда я запускаю сводку (данные $Ob), она говорит мне, что максимум равен 16970, а не 16968. Когда я запускаю макс (данные $Ob), она говорит, что максимум составляет 16968, а не значение из сводки.
Я запустил цикл for, чтобы проверить каждое наблюдение, и похоже, что функция max() верна и что переменная data$Ob делает то, что должна. Но кто-нибудь знает, почему функция итога отключена на 2? Я предполагаю ошибку округления (как-то?), Но эта проверка данных имеет решающее значение для анализа, который я делаю, и если это не так, то мой последующий анализ будет пустым.
Вот цикл, который я провел, но я не думаю, что это критично для этого вопроса.
checker <- vector(length=nrow(rd))
na.checker <- vector(length=nrow(rd))
for (i in 1:nrow(rd)){
checker[i] <- ifelse(i==rd$Ob[i], 1, 0)
na.checker[i] <- ifelse(is.na(rd$Ob[i])==TRUE,0,1)
}
sum(checker)
Благодарю.
1 ответ
Без воспроизводимого примера трудно сказать, но он пахнет как мать всех часто задаваемых вопросов: точность отображения по умолчанию составляет четыре цифры, поэтому 16968 округляется до 16970.
Изменить: нам нужны ваши образцы данных здесь, потому что на наивном примере я не могу воспроизвести это:
R> set.seed(42)
R> df <- data.frame(a=as.numeric(1:16968), b=16968:1,
+ c=rnorm(16968), d=runif(16968))
R> summary(df)
a b c d
Min. : 1 Min. : 1 Min. :-4.04328 Min. :0.000101
1st Qu.: 4243 1st Qu.: 4243 1st Qu.:-0.68271 1st Qu.:0.252515
Median : 8484 Median : 8484 Median :-0.00528 Median :0.505090
Mean : 8484 Mean : 8484 Mean :-0.00834 Mean :0.504563
3rd Qu.:12726 3rd Qu.:12726 3rd Qu.: 0.66746 3rd Qu.:0.758991
Max. :16968 Max. :16968 Max. : 4.32809 Max. :0.999976
Отредактируйте 2 с h/t до @SimonO101:
R> summary(df$a) ## what OP saw
Min. 1st Qu. Median Mean 3rd Qu. Max.
1 4240 8480 8480 12700 17000
R> summary(df$a, digits=6) ## what OP wanted to see
Min. 1st Qu. Median Mean 3rd Qu. Max.
1 4243 8484 8484 12726 16968
R>