使用dplyr重塑数据:使用附加标签将2列转换为1列(可选方法)
我有几个数据帧,如下所示:使用dplyr重塑数据:使用附加标签将2列转换为1列(可选方法),r,dplyr,etl,R,Dplyr,Etl,我有几个数据帧,如下所示: Date Identifier1 Identifier2 Status UsageGroup Value1 Value2 2011-08-05 A1 A2 1 2 3022 30 2013-10-06 A1 A2 1 2 5368 62 2014-9-21 A1
Date Identifier1 Identifier2 Status UsageGroup Value1 Value2
2011-08-05 A1 A2 1 2 3022 30
2013-10-06 A1 A2 1 2 5368 62
2014-9-21 A1 A2 1 2 9567 112
2015-12-25 A1 A2 1 2 15002 178
2016-10-21 A1 A2 1 2 18001 236
我想将其重塑为:
Date Identifier1 Identifier2 Status UsageGroup Value Id
2011-08-05 A1 A2 1 2 3022 1
2013-10-06 A1 A2 1 2 5368 1
2014-9-21 A1 A2 1 2 9567 1
2015-12-25 A1 A2 1 2 15002 1
2016-10-21 A1 A2 1 2 18001 1
2011-08-05 A1 A2 1 2 30 2
2013-10-06 A1 A2 1 2 62 2
2014-9-21 A1 A2 1 2 112 2
2015-12-25 A1 A2 1 2 178 2
2016-10-21 A1 A2 1 2 236 2
我使用完全连接并拆分原始数据集,如下所示:
df1<-df %>% rename(value=Value1) %>% select(-c("Value2")) %>% mutate(id=1)
df2<-df %>% rename(value=Value2) %>% select(-c("Value1")) %>% mutate(id=2)
df<-fulljoin(df1,df2) %>% group_by(id)
df1%rename(value=Value1)%%>%select(-c(“Value2”))%%>%mutate(id=1)
df2%重命名(value=Value2)%%>%select(-c(“Value1”))%%>%mutate(id=2)
df%分组人(id)
但是,我想知道是否有更有效的方法,因为我必须加入相当大的数据集。使用
tidyverse
可以执行以下操作:
df %>%
gather(var, Value, -c(Date, Identifier1, Identifier2, Status, UsageGroup)) %>%
mutate(Id = parse_number(var)) %>%
select(-var)
Date Identifier1 Identifier2 Status UsageGroup Value Id
1 2011-08-05 A1 A2 1 2 3022 1
2 2013-10-06 A1 A2 1 2 5368 1
3 2014-9-21 A1 A2 1 2 9567 1
4 2015-12-25 A1 A2 1 2 15002 1
5 2016-10-21 A1 A2 1 2 18001 1
6 2011-08-05 A1 A2 1 2 30 2
7 2013-10-06 A1 A2 1 2 62 2
8 2014-9-21 A1 A2 1 2 112 2
9 2015-12-25 A1 A2 1 2 178 2
10 2016-10-21 A1 A2 1 2 236 2
它将数据从宽格式转换为长格式,然后创建一个ID。使用
tidyverse
可以执行以下操作:
df %>%
gather(var, Value, -c(Date, Identifier1, Identifier2, Status, UsageGroup)) %>%
mutate(Id = parse_number(var)) %>%
select(-var)
Date Identifier1 Identifier2 Status UsageGroup Value Id
1 2011-08-05 A1 A2 1 2 3022 1
2 2013-10-06 A1 A2 1 2 5368 1
3 2014-9-21 A1 A2 1 2 9567 1
4 2015-12-25 A1 A2 1 2 15002 1
5 2016-10-21 A1 A2 1 2 18001 1
6 2011-08-05 A1 A2 1 2 30 2
7 2013-10-06 A1 A2 1 2 62 2
8 2014-9-21 A1 A2 1 2 112 2
9 2015-12-25 A1 A2 1 2 178 2
10 2016-10-21 A1 A2 1 2 236 2
它将数据从宽格式转换为长格式,然后创建一个ID。你可能需要
gather
小字体:一个df1Fixed@tomhaddow你可能需要gather
小字体:一个df1Fixed@TomHaddowHi@tmfmnk,这正是我要找的。Hi@tmfmnk,这正是我要找的。