使用 dplyr 将数据帧从宽转换为长

卫报

我想将我的数据库从宽格式转换为长格式,以便我可以绘制一个图,其中 x 轴为年份,y 轴为份额。我想为每个家庭画一条线,因为目标是看到两个 2034 值之间的差距。

这是我的数据框目前的样子: 当前数据帧

这是我想要的输出(我将 x 轴称为“Year”,y 轴称为“Share”) 期望输出

我已经尝试使用“dplyr”的“gather”选项:

gather(CPS_fam.long, Year, Share, 2:5)

但我选择重复的年份而不是姓氏。

我无法提供数据,但任何使用示例数据框的建议将不胜感激。

利萨多·埃尔曼

我认为你已经得到了正确的代码,但只需要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 

这是你想要的吗?

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使用2个变量将数据帧从宽转换为长

使用R行中存储的密钥将数据帧从宽格式转换为长格式

将数据从宽转换为长(使用多列)

如何使用Python将CSV数据从宽格式转换为长数据集

使用dplyr将数据框和列表转换为长格式

使用 dplyr 将“开始停止数据”(又名转码)转换为长格式(又名时间码)

使用 Pandas 将数据帧从长转换为宽

使用 R 将多列数据帧转换为长 3 列数据帧

pivot_longer 或其他方法将数据从宽转换为长,并使用新列保存键

如何使用dplyr操纵长表数据进行关联,但不将数据转换为宽格式

使用R中的重复标识符将数据帧从长转换为宽

R - 使用多个值列将数据帧从长格式转换为宽格式

多个数据帧-使用熊猫从宽到长

使用dplyr包进行数据帧转换的问题

使用R中多个“关键”列中的值将数据帧从长格式复杂转换为宽格式

将数据帧从宽转换为长,但将堆叠的行作为列

使用dplyr / tidyr将行转换为R数据框中的列

使用R dplyr将整个数据框转换为字符类

使用完成并填写dplyr将月薪数据转换为每周

使用dplyr提取数据

使用 SQL 将宽格式数据转换为长格式

使用R dplyr整理数据帧

使用dplyr分组数据帧扩展

使用“ dplyr :: mutate”时将字符转换为列名

如何使用dplyr将行转换为列

使用lubridate和dplyr将多列转换为日期

如何使用dplyr将矩阵列转换为单独的列?

使用yamltodb将YAML数据转换为数据帧

使用pivot_longer将长格式数据集转换为长格式数据集