是否有R函数用于使用现有数据帧中的两列创建新的数据帧



假设我有一个名为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)

最新更新