4

我有一个 16968 行数据框(准确的原因将在下面说明)。我正在检查运行变量 (data$Ob) 是否实际上是按顺序计算每一行(第一行 data$Ob 是 1...最后一行 data$Ob 是 16968 以及其间的每一行。

当我运行 summary(data$Ob) 时,它告诉我最大值是 16970 而不是 16968。当我运行 max(data$Ob) 时,它说最大值是 16968,而不是摘要中的值。

我运行了一个 for 循环来检查每个观察结果,看起来 max() 函数是正确的,并且 data$Ob 变量正在做它应该做的事情。但是有谁知道为什么摘要功能关闭了 2?我假设舍入错误(不知何故?)但是这个数据检查对我正在做的分析至关重要,如果它错误,那么我的后续分析将是错误的。

这是我运行的 for 循环,但我认为这对这个问题并不重要。

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)

谢谢。

4

1 回答 1

9

如果没有可重现的示例,很难说,但它闻起来就像所有常见问题解答之母:默认显示精度为四位数,因此 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> 
于 2013-05-04T21:41:02.070 回答