我有一个16968行数据帧(准确性的原因将在下面说明).我正在检查运行变量(数据$ Ob)是否实际上按顺序计数每一行(第一行数据$ Ob是1 ...最后一行数据$ Ob是16968,以及它们之间的每一行.
当我运行summary(数据$ Ob)时,它告诉我最大值是16970而不是16968.当我运行max(数据$ Ob)时,它表示最大值是16968,而不是摘要值.
我运行了一个for循环来检查每个观察,看起来max()函数是正确的,并且数据$ Ob变量正在做它应该做的事情.但有没有人知道为什么摘要函数关闭2?我假设舍入错误(不知何故?)但是这个数据检查对我正在进行的分析至关重要,如果错误则我的后续分析将是下载.
这是我跑的for-loop,但我不认为这对这个问题至关重要.
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)
Run Code Online (Sandbox Code Playgroud)
谢谢.
没有一个可重复的例子,很难说,但它闻起来像所有常见问题解答的母亲:默认显示精度是四位数,所以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
Run Code Online (Sandbox Code Playgroud)
编辑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>
Run Code Online (Sandbox Code Playgroud)