【问题标题】:Transpose rows, columns, and groups [duplicate]转置行、列和组[重复]
【发布时间】:2021-02-09 20:11:47
【问题描述】:

我有一个 DF,我想转置行和列并对 ID 的数量进行分组(不同计数)。我的例子:

ID<- c(111,222,111,222,333,111,222,333)
AGE_GROUP<- c("30_40","30_40","30_40","30_40","50_60","30_40","30_40","50_60")
DATE<-c("JAN","JAN","FEB","FEB","FEB","MAR","MAR","MAR")
DF<-data.frame(ID,AGE_GROUP,DATE)

我想要的结果。我的新DF:

AGE_GROUP<- c("30_40","50_60")
JAN<- c(2,0)
FEB<- c(2,1)
MAR<- c(2,1)
DF2<-data.frame(AGE_GROUP,JAN,FEB,MAR)

我将如何进行这种分组和转置?

【问题讨论】:

标签: r dplyr


【解决方案1】:

删除“ID”列后,我们使用pivot_widervalues_fn

library(dplyr)
library(tidyr)
DF %>% 
  select(-ID) %>% 
  pivot_wider(names_from = DATE, values_from = DATE, 
     values_fn = length, values_fill = 0)

-输出

# A tibble: 2 x 4
#  AGE_GROUP   JAN   FEB   MAR
#  <chr>     <int> <int> <int>
#1 30_40         2     2     2
#2 50_60         0     1     1

base Rtable 会更容易

table(DF[-1])

【讨论】:

  • 谢谢,在这里工作!您是否仅考虑了出现次数?如果它是不同的出现次数怎么办?
  • @BrunoAvila 这只是计数。如果您需要独特,请使用table(unique(DF[-1]))
猜你喜欢
  • 2018-05-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-01
  • 2022-07-21
  • 1970-01-01
  • 2018-10-24
相关资源
最近更新 更多