首页 > 解决方案 > 计算行中的元素并映射到r中的列

问题描述

我想通过计算实体来总结我的数据并为每个实体创建counting_column。让我们说:df:

id   class
1     A
1     B
1     A
1     A
1     B
1     c
2     A
2     B
2     B
2     D

我想创建一个像

id  A  B  C  D
1   3  2  1  0
2   1  2  0  1

如何使用应用函数在 R 中执行此操作?

标签: rapply

解决方案


df <- structure(list(id = c(1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L), 
class = structure(c(1L, 2L, 1L, 1L, 2L, 3L, 1L, 2L, 2L, 4L
), .Label = c("A", "B", "C", "D"), class = "factor")), .Names = c("id", 
"class"), class = "data.frame", row.names = c(NA, -10L))

with(df, table(id, class))
#   class
#id  A B C D
#  1 3 2 1 0
#  2 1 2 0 1

xtabs(~ id + class, df)
#   class
#id  A B C D
#  1 3 2 1 0
#  2 1 2 0 1

tapply(rep(1, nrow(df)), df, length, default = 0)
#   class
#id  A B C D
#  1 3 2 1 0
#  2 1 2 0 1

推荐阅读