我想将数据库从宽格式转换为长格式,这样我就可以绘制出x轴上有年份,而y轴上有份额的图表。我想为每个家庭画一条线,因为目标是看到两个2034年值之间的差距。
这是我想要的输出(我将x轴称为“ Year”,将y轴称为“ Share”)
我已经尝试通过以下方式使用“ dplyr”的“收集”选项:
gather(CPS_fam.long, Year, Share, 2:5)
但我认为重复的年份不是姓氏。
我无法提供数据,但是使用示例数据框的任何建议将不胜感激。
答案 0 :(得分:1)
我认为您已经获得了正确的代码,但是只需arrange
Fam_Name
来生成结果数据帧。
让我重现您的问题:
library(tidyverse)
df <- tibble("Fam_Name" = c("Architecture", "Arts", "Business"), "2002" = c(0.134, 0.116, 0.399), "2018" = c(0.161, 0.089, 0.06))
df %>% gather(., key = Year, value = Shares, c("2002", "2018"))
# Fam_Name Year Shares
# <chr> <chr> <dbl>
#1 Architecture 2002 0.134
#2 Arts 2002 0.116
#3 Business 2002 0.399
#4 Architecture 2018 0.161
#5 Arts 2018 0.089
#6 Business 2018 0.06
现在,将arrange
作为管道的最后一部分:
df %>% gather(., key = Year, value = Shares, c("2002", "2018")) %>% arrange(Fam_Name)
# Fam_Name Year Shares
# <chr> <chr> <dbl>
#1 Architecture 2002 0.134
#2 Architecture 2018 0.161
#3 Arts 2002 0.116
#4 Arts 2018 0.089
#5 Business 2002 0.399
#6 Business 2018 0.06
这是您想要的吗?