2011-02-23 74 views
1

summary(或另一个命令)强制R在每个单元格中有“无数据”时计算值吗?当不是所有的单元格都有数据时,R`summary`

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

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

我要的是计算出的概要。有没有办法告诉[R无视-nodata--1

回答

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-”值时,它将被视为一个字符或一个因子变量。

您还可以使用table功能的exclude参数自动忽略一些值:

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 
+0

即我是缺少的一条信息。非常感谢你! – marw 2011-02-23 22:27:47

1

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

还有函数read.table到一个na.strings参数,它可以被设置为na.strings = "-nodata-"与NA自动替换这些。

最后一个猜测从现有data.frame去,更换无数据值,并转换为数字:

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

这对因子的水平索引被推荐的因素,但你应该退一步?其中数据被读取或以其他方式生成和

+1

感谢您的支持。我最好不要在内部转换“NA”,并在电子表格中保持所有数据不变。 – marw 2011-02-24 10:24:03

相关问题