我有一个包含200多个分类变量的表。样品:
Cat1 Cat2 Cat3
A B A
B A A
A C A
A B A
我想获得数据集中出现的任何类别的频率(次数)。像这样:
我对R很新,并尝试使用for循环来获得结果。我相信有更好的方法可以做到这一点。你能帮帮我吗?
答案 0 :(得分:1)
一般来说,计算每种类型牌数的最方便的函数是?table:
d <- read.table(text="Cat1 Cat2 Cat3
A B A
B A A
A C A
A B A", header=T)
table(d$Cat1)
# A B
# 3 1
对数据集中的每个分类变量执行table()
的最便捷方法是使用?summary.data.frame:
summary(d)
# Cat1 Cat2 Cat3
# A:3 A:1 A:4
# B:1 B:2
# C:1
另一方面,如果您希望获得折叠所有分类变量的表格,可以将table()
与?unlist一起使用:
table(unlist(d))
# A B C
# 8 3 1
要了解那里发生了什么,要意识到的是,在R
中,数据框是一种特殊的列表:每个变量都是一个向量,数据帧是一个向量列表等长(参见,here)。 unlist()
函数将这些函数转换为从第一个到最后一个连接的一个长向量。请注意,如果您混入了一些非分类变量,则需要排除table(unlist(d[,c(<variables to use>)]))
之类的变量。