我试图从有序变量(范围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的新手
答案 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}},因为它们不代表数字