首页 > 解决方案 > 将宽数据重塑为长格式

问题描述

我在使用 . 将宽数据改造成长格式时遇到了麻烦reshape melt。但我找不到最适合我需要的解决方案。对不起,如果我重复这个问题。我的单个变量的月度数据(CSV 文件)格式如下;

Date        level1  level2  level3  level4 ..... level100
1/1/2003    191.3    191.4  191.4   191.4
1/2/2003    184.3    184.3  184.3   184.3
1/3/2003    176.5    176.5  176.5   176.5
1/4/2003    175.5    175.5  175.5   175.5
..
..
1/12/2003

我正在尝试以这种格式重塑

Date        Level   value
1/1/2003    1       191.3
1/1/2003    2       191.4
..      ..      ..
1/1/2003    100     #value
1/2/2003    1       #value
1/2/2003    2       #value
..
1/2/2003    100     #value

等等...

标签: raggregatereshapemelt

解决方案


您可以使用pivot_longerfrom tidyr-

result <- tidyr::pivot_longer(df, 
                    cols = -Date, 
                    names_to = 'Level',
                    names_pattern = 'level(\\d+)'
                    )

result

#    Date     Level value
#   <chr>    <chr> <dbl>
# 1 1/1/2003 1      191.
# 2 1/1/2003 2      191.
# 3 1/1/2003 3      191.
# 4 1/1/2003 4      191.
# 5 1/2/2003 1      184.
# 6 1/2/2003 2      184.
# 7 1/2/2003 3      184.
# 8 1/2/2003 4      184.
# 9 1/3/2003 1      176.
#10 1/3/2003 2      176.
#11 1/3/2003 3      176.
#12 1/3/2003 4      176.
#13 1/4/2003 1      176.
#14 1/4/2003 2      176.
#15 1/4/2003 3      176.
#16 1/4/2003 4      176.

要将输出写入 csv,请使用write.csv-

write.csv(result, 'result.csv', row.names = FALSE)

推荐阅读