Guy*_*Guy 2 pivot r 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() %>%
spread(cyl, n, fill = 0)
Run Code Online (Sandbox Code Playgroud)
获得值的总和
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))
Run Code Online (Sandbox Code Playgroud)
还有另一种方法可以在dplyr中做同样的事情吗?
akr*_*run 11
我们按'cyl','gear'分组,获取频率计数(tally()),从'long'重新整形为'wide'(使用spreadfrom tidyr),ungroup删除属性(以前,它曾经没有这个工作),用于mutate创建'V1'作为sum每行(使用rowSums)和最后arrange(order)行基于'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
Run Code Online (Sandbox Code Playgroud)