我想获得一个具有降序值的数据透视表。
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中还有另一种方法吗?
答案 0 :(得分:11)
我们按照&#39; cyl&#39;&#39; gear&#39;来获取频率计数(tally()
),重新设定&#39; long&#39;广泛的&#39; (使用spread
中的tidyr
),ungroup
删除属性(以前,过去没有使用此属性),使用mutate
创建&#39; V1&#39 ;作为每行的sum
(使用rowSums
),最后是arrange
(order
)行,基于&#39; V1&#39;中的值。
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