当所有单元格都没有数据时,R`摘要`

时间:2011-02-23 21:53:38

标签: r summary

summary(或其他命令)中是否有一个参数强制 R 计算每个单元格中“无数据”时的值?

在我的调查问卷中,科目没有提供所有信息;对于那些我输入-nodata-的单元格。对于答案不适用的单元格(基于q中的上一个问题),我输入了-1summary看起来像这样:

> summary(qs$ESC) 
      -1 -nodata-      0.5        1       12       15        3 
      49        3        1        1        1        1        1 

我想要的是计算摘要。有没有办法告诉 R 忽视-nodata--1

2 个答案:

答案 0 :(得分:3)

我真的不明白你想要计算什么样的摘要。

如果您使用NA代替“-nodata-”和“-1”代码,则在使用summary函数时会自动考虑这些代码:

例如:

R> v <- c(NA, NA, 0.5, 1, 12, 15, 3)
R> summary(v)
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max.    NA's 
    0.5     1.0     3.0     6.3    12.0    15.0     2.0 
R> table(v)
v
0.5   1   3  12  15 
  1   1   1   1   1 

您可以看到此处v被视为数字,因为其中没有字符串值。当您引入“-nodata-”值时,它将被视为字符或因子变量。

您还可以使用exclude函数的table参数自动忽略某些值:

R> v <- c(-1, "-nodata-", 0.5, 1, 12, 15, 3)
R> table(v)
v
     0.5        1       -1       12       15        3 -nodata- 
       1        1        1        1        1        1        1 
R> table(v, exclude=c(-1, "-nodata-"))
v
0.5   1  12  15   3 
  1   1   1   1   1 

答案 1 :(得分:1)

ESC列很可能是一个因子,当从列的数据类型进行猜测并且需要字符时,read.table的data.frame的默认值。您应该将参数stringsAsFactors=FALSE添加到对read.table的原始调用中 - 这将使列成为文本,然后将“-nodata-”值转换为NA,然后转换为numeric。

read.table还有一个na.strings参数,可以设置为na.strings = "-nodata-"以自动用NA替换它们。

最后猜测从现有的data.frame,替换nodata值并转换为数字:

qs$ESC[qs$ESC == "-nodata-"] <- NA
summary(as.numeric(levels(qs$ESC))[qs$ESC]

因子推荐使用因子水平的索引,但您应该回到读取或以其他方式生成数据的位置