假设我有一个名为cupcakes的数据帧。我有三栏——一栏叫馅料,一栏叫蛋糕味,还有一栏叫撒色。我想创建一个新的数据帧,只提取馅料和蛋糕口味,它计算每种可能组合的商品数量(例如,我卖的5个纸杯蛋糕中有奶油馅料和巧克力蛋糕,所以它在那个单元格中打印5个(。
我希望填充是我的行,蛋糕口味是我的列。我该如何做到这一点?
我尝试将这些列转换为表,但它并没有使一个变量成为列,一个变量变成行。这是我的密码:cakestrim<-作为.data.frame(表(蛋糕$填充,蛋糕$风味((。
任何帮助都将不胜感激!
两个想法:as.data.frame.matrix
,另一个是janitor
包中的tabyl
函数。
cakes<-data.frame(filling=sample(c("A", "B", "C"), 20, replace=TRUE),
flavor=sample(c("X", "Y", "Z"), 20, replace=TRUE))
table(cakes$filling,cakes$flavor)
cakes2<-as.data.frame.matrix(table(cakes$filling,cakes$flavor))
library(janitor)
cakes3<-tabyl(cakes, filling, flavor)
filling X Y Z A 1 2 3 B 0 1 3 C 4 3 3
一个更复杂的想法,对高级问题具有灵活性
library(tidyverse)
cakes %>%
group_by(filling, flavor) %>%
summarise(n = n()) %>%
pivot_wider(names_from = flavor,
values_from = n)