我想知道下表中转换数据的实用方法
dat <- data.frame('city' = c('A','A','B','C','A','B','B','C','C','C'),
'color' = c('red', 'green', 'blue', 'red', 'green', 'blue', 'green', 'blue', 'red', 'red'),
'sex' = c('M','F','F','M','F','F','F','M','F','M'))
city red green blue F M
A 1 2 0 2 1
B 0 1 2 3 0
C 3 0 1 1 3
3条答案
按热度按时间0g0grzrc1#
使用
tidyr
,您可以先使用pivot_longer
,然后使用pivot_wider
:values_transform = as.factor
与names_sort = TRUE
是对列名进行排序的技巧。base
解决方案:carvr3hs2#
使用
sapply
,创建多个table
和bind
:4ioopgfo3#
你可以先转换成更长的格式,然后计算每组的值,再使用
pivot_wider
转换回更宽的格式,如下所示:创建于2023年1月31日,使用reprex v2.0.2