1

当每个单元格中都“没有数据”时,是否有参数summary(或另一个命令)强制R计算值?

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

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

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

4

2 回答 2

3

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

summary如果您使用 NA 而不是“-nodata-”和“-1”代码,则在使用该函数时会自动考虑它们:

例如 :

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 
于 2011-02-23T22:12:47.753 回答
1

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

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]

?factor 建议对因子水平进行索引,但您应该退回到数据被读取或以其他方式生成的位置,并且

于 2011-02-23T22:30:52.837 回答