【发布时间】:2015-11-20 18:53:35
【问题描述】:
我有一个如下示例数据集:
a <- structure(list(Occ = c(1, 2, 3, 4, 4, 5, 6, 4, 8, 5),
Type = c("A", "B", "C", "A", "A", "A", "B", "C", "C", "B"),
Alc = c("A", "B", "N", "A", "N", "N", "N", "A", "B", "B")),
.Names = c("Occ", "Type", "Alc"), row.names = c(NA, -10L), class = "data.frame")
a
Occ Type Alc
1 1 A A
2 2 B B
3 3 C N
4 4 A A
5 4 A N
6 5 A N
7 6 B N
8 4 C A
9 8 C B
10 5 B B
我使用lapply 来查找每个变量中的类别计数。
lapply(a, table)
$Occ
1 2 3 4 5 6 8
1 1 1 3 2 1 1
$Type
A B C
4 3 3
$Alc
A B N
3 3 4
我喜欢以dataframe 格式获取百分比,如下所示:
Occ
1: 10%
2: 10%
3: 10%
4: 30%
5: 20%
6: 10%
8: 10%
Type
A: 40%
B: 30%
C: 30%
Alc
A: 30%
B: 30%
C: 40%
【问题讨论】:
-
您确定要输出一列吗?
-
我猜使用多列不会有问题。
-
使用
lapply(a, function(x) paste0(round(prop.table(table(x))*100,2), "%"))。一切都已格式化。您可以将其保留为列表,也可以将其转换为其他内容。