我需要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
答案 0 :(得分:0)
你可以尝试
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)