R忽略0值

时间:2015-03-25 10:30:42

标签: r histogram

我试图从有序变量(范围0到10)中创建一些描述性统计和直方图。我使用了以下命令:

class(data$var1)
describe(as.numeric(data$var1))

但是R从1开始并将“拒绝”值计为另一个数值。

如何让R从0开始并忽略“拒绝”值?

谢谢。

编辑:我可以使用以下命令让R忽略“拒绝”值:

is.na (data$var1[data$var1=="Refusal"]) <- TRUE

但是当我搜索关于0值的可​​能解决方案时,我只找到关于如何忽略/删除0值的建议......

Edit2:这是我的数据样本

 [1] 5       8       8       8       Refusal 10      8       Refusal 7      
  [10] 7       8       7       8       8       8       8       8       8      
  [19] 8       0       9       Refusal 6       10      7       7       9

你可以看到范围从0到10但是使用R库“psych”和命令“describe”输出范围总是1到11,这使整个统计数据无效。

> class(data$var1)
[1] "factor"
> describe(as.numeric(data$var1), na.rm=TRUE)
  vars    n mean   sd median trimmed  mad min max range  skew kurtosis   se
1    1 1115 8.38 1.94      9    8.57 1.48   1  11    10 -1.06     1.42 0.06

对于正在进行的编辑感到抱歉,但我是stackoverflow.com的新手

1 个答案:

答案 0 :(得分:0)

使用?factor或查看示例question here,了解因素的工作原理。从本质上讲,每个级别都有一个从1开始的数字,如果你有11个唯一值,则结束于11。将因子转换为数字会返回这些代码,而不是它们所涉及的基础数字。为此,首先转换为字符,然后转换为数字。查看这些代码段之间的区别:

#create data
set.seed(0)
a <- factor(sample(c(0:10,"refusal"),50,T)) #Some dummy data
class(a)
# [1] "factor"

摘录1 - 你是怎么做的

describe(as.numeric(a),na.rm=TRUE)
#as.numeric(a) 
#n missing  unique    Mean     .05     .10     .25     .50     .75     .90     .95 
#50       0      11    6.28    2.00    2.00    4.00    6.00    8.75   10.00   11.00 
#
#1  2  3 4 5  6  7  8 9 10 11
#Frequency 2  5  5 4 2  8  6  5 3  6  4
#%         4 10 10 8 4 16 12 10 6 12  8

摘录2 - 正确的方法

describe(as.numeric(as.character(a)),na.rm=TRUE)
#as.numeric(as.character(a)) 
#n missing  unique    Mean     .05     .10     .25     .50     .75     .90     .95 
#46       4      10   5.304     1.0     1.0     3.0     5.0     8.0     9.5    10.0 
#
#0  1 2 3  4  5  7 8  9 10
#Frequency 2  5 4 2  8  6  5 3  6  5
#%         4 11 9 4 17 13 11 7 13 11
#Warning message:
#  In describe(as.numeric(as.character(a)), na.rm = TRUE) :
#  NAs introduced by coercion

请注意范围的差异(即使我的describe功能与您的NAs功能不同)。该警告指的是“拒绝转换为{{1}},因为它们不代表数字