【发布时间】:2021-11-11 19:50:09
【问题描述】:
背景
这是一个数据框d:
d <- data.frame(ID = c("a","a","b","b"),
product_code = c("B78","X31","C12","C12"),
multiple_products = c(1,1,0,0),
stringsAsFactors=FALSE)
问题和我想要什么
我正在尝试使用基本R 的table 函数制作multiple_products 的交叉制表式频率表,但我想通过ID 而不是按行这样做。这就是我要找的东西:
0 1
1 1
换句话说,一个表显示“有 1 个ID multiple_products 等于 0,还有 1 个 ID 等于 1”。
我的尝试
到目前为止,这是我使用dplyr 的尝试:
dtable <- d %>%
group_by(ID) %>%
table(d$multiple_products) %>%
ungroup()
这段代码在我的真实数据集上运行没有错误,但它给了我与table(d$multiple_products) 相同的结果,即:
0 1
2 2
表示“multiple_products 等于 0 的 2 行,等于 1 的 2 行”。
在我在这里给你的玩具示例中,这段代码甚至没有运行,给我以下错误:
Error: Can't combine `ID` <character> and `multiple_products` <double>.
有什么想法吗?
【问题讨论】: