summary(as.factor(qanswer$q41))
1 B C D E NA's
112 66 127 45 30 896
我只想获得1的数字,即112.然后我尝试了:
length(qanswer$q41[qanswer$q41==1])
[1] 1008
> length(qanswer$q41[qanswer$q41=='1'])
[1] 1008
> length(qanswer$q41[qanswer$q41=='A'])
[1] 896
> length(qanswer$q41[qanswer$q41=='B'])
[1] 962
我做了一个功能:
x<-function(column){sum(column=='1',na.rm = TRUE)/sum(column,na.rm = TRUE)}
> x(qanswer$q41)
Error in sum(column, na.rm = TRUE) :
invalid 'type' (character) of argument
问题是什么?
答案 0 :(得分:1)
我们可以使用sum
sum(qanswer$q41==1, na.rm = TRUE)
由于&#39; q41&#39;中有NA值。列,==
返回NA元素的NA,并通过子集qanswer$q41[qanswer$q41==1]
,长度也包括896个NA,即
896+ 112 = 1008
相反,我们需要确保在na.rm=TRUE
中删除(sum
)NAs,或者如果我们想尝试使用!is.na
},则需要使用length
length(qanswer$41[qanswer$q41==1 & !is.na(qanswer$q41)])