【问题标题】:R gather function: 2 level grouped dataR收集功能:2级分组数据
【发布时间】:2018-05-28 11:25:32
【问题描述】:

我需要gather 一个数据框,但是这些列有更多的分组。示例:

当我只有列时,我知道如何使用gather。 但我也希望有这样的组:

通过这种方式,我以后可以根据需要对这些数据进行分组。 我该怎么做?

        group1  group1  group2  group2  group2
Week    Region  1   2   3   4   5
201601  somehing    0   0   0   0   0
201602  somehing    0   0   0   0   0
201603  somehing    0   0   0   0   0
201604  somehing    0   0   79.03055276 0   20675
201605  somehing    0   0   68.2845204  0   955157
201606  somehing    0   0   46.12847797 0   943991
201607  somehing    0   0   0   0   935029
201608  somehing    0   0   0   0   899158
201609  somehing    0   0   0   0   127633
201610  somehing    0   0   0   0   0
201611  somehing    0   0   0   0   0
201612  somehing    0   0   0   0   0
201613  somehing    0   0   0   0   0
201614  somehing    0   94.71177518 0   0   0

【问题讨论】:

  • 能否请您 dput() 您的数据?还是创建一个可重现的例子?
  • 至少把表格复制粘贴进去。这种提问方式很烦人,让人不想帮你
  • 我正在尝试但我不熟悉这个网站:(

标签: r tidyr


【解决方案1】:

你可以试试

library(tidyverse)
df %>% 
  gather(k, v, -Week, -Region) %>% 
  mutate(groups=case_when(k %in% paste0("X",1:2) ~ "group1",
                          k %in% paste0("X",3:5) ~ "group2")) %>%    
head
    Week   Region  k v groups
1 201601 somehing X1 0 group1
2 201602 somehing X1 0 group1
3 201603 somehing X1 0 group1
4 201604 somehing X1 0 group1
5 201605 somehing X1 0 group1
6 201606 somehing X1 0 group1

数据。在没有第一行的情况下读入。将使用case_when添加组

df <- read.table(text="V1 V2 group1 group1  group2  group2  group2
    Week    Region  1   2   3   4   5
    201601  somehing    0   0   0   0   0
    201602  somehing    0   0   0   0   0
    201603  somehing    0   0   0   0   0
    201604  somehing    0   0   79.03055276 0   20675
    201605  somehing    0   0   68.2845204  0   955157
    201606  somehing    0   0   46.12847797 0   943991
    201607  somehing    0   0   0   0   935029
    201608  somehing    0   0   0   0   899158
    201609  somehing    0   0   0   0   127633
    201610  somehing    0   0   0   0   0
    201611  somehing    0   0   0   0   0
    201612  somehing    0   0   0   0   0
    201613  somehing    0   0   0   0   0
    201614  somehing    0   94.71177518 0   0   0", header=T,  skip=1)

【讨论】:

    猜你喜欢
    • 2018-02-07
    • 2018-06-13
    • 2020-12-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多