在将计数计算为行时,将R缺失值视为其他值

时间:2014-05-25 02:46:35

标签: r stata

aaa<-data.frame(x=c(1,3,1,1,2),stringsAsFactors=FALSE)

out <- matrix(NA,ncol =2,nrow =3)
for(i in 1:length(unique(aaa$x))) {
  out[i,1]<-unique(aaa$x)[i]
  out[i,2]<-sum(aaa$x==unique(aaa$x)[i])
}
out
         [,1] [,2]
   [1,]    1    3
   [2,]    3    1
   [3,]    2    1

如何修改代码和结果

         [,1] [,2]
   [1,]    1    3
   [2,]    2    1
   [3,]    3    1

如果

aaa<-data.frame(x=c(1,NA,1,1,2),stringsAsFactors=FALSE)

结果

         [,1] [,2]
   [1,]    1    3
   [2,]    2    1
   [3,]    NA   1

在Stata&#34; tab var1,missing&#34;会是一个答案。在R中,我想用循环来做它。

1 个答案:

答案 0 :(得分:2)

如果您只计算每次观察的发生次数,可以使用简单的table

table(aaa$x, useNA="ifany")

或将其格式化为输出。

as.matrix(as.data.frame(table(aaa$x, useNA="ifany")))
#   Var1 Freq
# 1    1    3
# 2    2    1
# 3 <NA>    1

不需要循环。