dplyr数据透视表
我想获得一个具有递减值的透视表dplyr数据透视表,r,pivot,dplyr,tidyr,R,Pivot,Dplyr,Tidyr,我想获得一个具有递减值的透视表 library(dplyr) library(tidyr) h<-mtcars %>% group_by(cyl, gear) %>% tally() %>% spread(gear, n, fill = 0) h<-h%>% add_rownames("index") i<-mtcars %>% group_by(cyl, gear) %>% tally() %>% spre
library(dplyr)
library(tidyr)
h<-mtcars %>%
group_by(cyl, gear) %>%
tally() %>%
spread(gear, n, fill = 0)
h<-h%>% add_rownames("index")
i<-mtcars %>%
group_by(cyl, gear) %>%
tally() %>%
spread(cyl, n, fill = 0)
获取值的总和
j<-i%>%
select(-1)%>%
summarise_each(funs(sum))
k<-t(j)
k<- as.data.frame(k)
k<-tbl_df(k)
k<-k%>%add_rownames("index")
l<-left_join(h,k,by="index")
l<-l%>%
select(-1)%>%
arrange(desc(V1))
在dplyr中是否还有其他方法可以做到这一点?我们按“cyl”、“gear”分组,获得频率计数计数,使用“tidyr”中的“spread”将“long”重塑为“wide”,取消分组以删除以前的属性,以前没有这些属性时,它也可以工作,使用mutate创建“V1”作为使用rowSums的每一行的总和,最后根据“V1”中的值排列行的顺序
library(dplyr)
library(tidyr)
mtcars %>%
group_by(cyl, gear) %>%
tally() %>%
spread(gear, n, fill=0) %>%
ungroup() %>%
mutate(V1= rowSums(.[-1])) %>%
arrange(desc(V1))
# cyl 3 4 5 V1
# <dbl> <dbl> <dbl> <dbl> <dbl>
#1 8 12 0 2 14
#2 4 1 8 2 11
#3 6 2 4 1 7
谢谢akrun,您的答案是Simplefy Perfecty,我得到了错误:不兼容的大小3,在尝试此dplyr 0.4.3,tidyr 0.4.1时应为1组大小或1。我可以通过在spread和mutate参数之间插入data.frame%>%或者删除属性vars attrh来解决这个问题,该属性=vars@JWilliman您需要在spread和mutate之间添加ungroup。我认为这是2015年至2016年期间职能调整的结果。