我有一个变量数据框,有些出现不止一次,例如: a,b,b,b,c,c,d,e,f 然后我想得到一个输出(在两列中),如下所示: 1; b 3; c 2; d 1; e 1; f 1。 额外问题:如果变量在计数列中出现的次数小于'n'次,我希望变量被命名为某种东西(例如,如果少于2次,则为“其他”)。
答案 0 :(得分:5)
制表和折叠
您的示例向量是
vec <- letters[c(1,2,2,2,3,3,4,5,6)]
要获得制表,请使用
tab <- table(vec)
要折叠不常用的项目(例如,计数低于2),请使用
res <- c(tab[tab>=2],other=sum(tab[tab<2]))
# b c other
# 3 2 4
以两列显示
resdf <- data.frame(count=res)
# count
# b 3
# c 2
# other 4
从技术上讲,&#34;第一列&#34;这是行标签,可通过rownames(resdf)
访问。
类似的选项包括:
stack(res)
有两个实际列data.frame(count=sort(res,decreasing=TRUE))
排序在所有这些中,tab
或c(tab)
可用于代替res
。