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中,我想用循环来做它。
答案 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
不需要循环。