r - 来自数据框的列联表,保留第一列作为引用

标签 r

这是我的输入数据框:

df <- data.frame(Col1=c("A", "B", "C", "B", "C", "A", "A", "C"),Col2=c("Blue", "Red", "Blue", "Blue", "Blue", "Red", "Red", "Blue"),Col3=c("Young", "Old", "Old", "Young", "Young", "Young", "Old", "Old"))

df
Col1 Col2  Col3
1    A Blue Young
2    B  Red   Old
3    C Blue   Old
4    B Blue Young
5    C Blue Young
6    A  Red Young
7    A  Red   Old
8    C Blue   Old

我正在尝试获取如下列联表:

   Blue   Red   Young   Old
A     1     2       2     1
B     1     1       1     1
C     3     0       1     2

我几乎可以使用以下命令,但 Col2 和 Col3 组合在一起:

as.data.frame(table(df)) %>% dcast(Col1 ~ Col2 + Col3, value.var="Freq")
  Col1 Blue_Old Blue_Young Red_Old Red_Young
1    A        0          1       1         1
2    B        0          1       1         0
3    C        2          1       0         0

最佳答案

可用于任意数量列的基本 R 选项可以是,

do.call(cbind, lapply(df[-1], function(i) table(df$Col1, i)))
#  Blue Red Old Young
#A    1   2   1     2
#B    1   1   1     1
#C    3   0   2     1

关于r - 来自数据框的列联表,保留第一列作为引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55747566/

相关文章:

r - R Shiny 应用程序中的传单 map 图例不显示颜色

R数据表grep的优化

r - 根据另一个数据表过滤数据表

r - 在 R 中创建变量列表以在公式中使用

将负数向量提升为 R 中的分数指数

r - 将列添加到 R 中的空数据框中

r - 如何使用dplyr的filter()和R-base的ifelse()过滤数据帧?

r - 基于 TRUE/FALSE 变量列的箱线图

r - 提取 R 中列的最高和最低值以及行标识符

r - 在 R 中计算小计