R 使用扩展和分离来构造表

R 使用扩展和分离来构造表,r,format,frequency,tidyr,R,Format,Frequency,Tidyr,我有一个类似下面的表,我想获得一些频率统计数据,这是我使用下面的代码完成的 df <- data.frame(cbind(sample(c('Controle','Tratado'), 10, replace = T), sample(c(2012,2016),10,T), c('A','B','A','B','C','D','D','A'

我有一个类似下面的表,我想获得一些频率统计数据,这是我使用下面的代码完成的

df <- data.frame(cbind(sample(c('Controle','Tratado'),
                              10, replace = T),
                       sample(c(2012,2016),10,T),
                       c('A','B','A','B','C','D','D','A','F','A')))

colnames(df) <- c('Group','Year','Unit')

table <- df %>%
  group_by(Year,Group) %>%
  count(Unit) %>%
  mutate(prop = prop.table(n)) %>%
  bind_rows(df %>%                                               
              mutate(Group ="Total") %>%                         
              group_by(Year, Group) %>%                         
              count(Unit)) %>%
  mutate(prop = prop.table(n))
换句话说,考虑到2016年的总组数,我可以按n较大的单位对结果进行排序吗?

您也可以使用tidyr

> table2 <- table%>%gather(type,measurement, -Year,-Group,-Unit)%>%
                    unite(year_group,Year:Group,sep = ":")%>%
                    spread(year_group,measurement)
这还保留了测量类型,即计数n和道具

快速简便地使用:

这将使用剩余的一列来填充值。要保留这两项:

table.m <- melt(table, id.vars = c("Year", "Group", "Unit"))
dcast(table.m, Unit + variable ~ Year + Group )

如图书馆2;dcasttable,单位~年+组?我想它能做到!谢谢你们。与您的问题无关,但不要使用data.framecbind…,只需使用data.frameOn类似的注释,table是一个内置函数。不建议使用您自己的同名对象覆盖此类函数。
library(reshape2); 
dcast(table, Unit ~ Year + Group )
table.m <- melt(table, id.vars = c("Year", "Group", "Unit"))
dcast(table.m, Unit + variable ~ Year + Group )
 Unit variable 2012_Controle 2012_Total 2012_Tratado 2016_Controle 2016_Total 2016_Tratado
1     A        n     1.0000000  3.0000000    2.0000000            NA       1.00          1.0
2     A     prop     0.3333333  0.5000000    0.6666667            NA       0.25          0.5
3     B        n     1.0000000  2.0000000    1.0000000            NA         NA           NA
4     B     prop     0.3333333  0.3333333    0.3333333            NA         NA           NA
5     C        n     1.0000000  1.0000000           NA            NA         NA           NA
6     C     prop     0.3333333  0.1666667           NA            NA         NA           NA
7     D        n            NA         NA           NA           1.0       2.00          1.0
8     D     prop            NA         NA           NA           0.5       0.50          0.5
9     F        n            NA         NA           NA           1.0       1.00           NA
10    F     prop            NA         NA           NA           0.5       0.25           NA