r-将表格的一部分从宽更改为长



如果得到答复,我提前道歉。我就是找不到任何适合这种特殊情况的东西。

不管怎样,我有一张这样的桌子:

Country       code  Year_1960 Year_1961 Year_1962 Year_1963 Year_1964
<chr>         <chr>     <dbl>     <dbl>     <dbl>     <dbl>     <dbl>
1 Afghanistan   AFG     8996351   9166764   9345868   9533954   9731361
2 Albania       ALB     1608800   1659800   1711319   1762621   1814135
3 Algeria       DZA    11124888  11404859  11690153  11985136  12295970
4 American Sam~ ASM       20013     20486     21117     21882     22698
5 Andorra       AND       13411     14375     15370     16412     17469
6 Angola        AGO     5643182   5753024   5866061   5980417   6093321

请注意,每个不同的年份都是一个标题。我想把这张表做成长条形。国家/地区和代码功能已采用该格式。我该怎么做?

我试过融化((、重塑((等等。我很挣扎。提前感谢您的帮助。

我希望这就是您想要的。您也可以将names_prefix = "Year_"设置为names_pattern的替代方案,如亲爱的Martin在评论中所指定的。

library(dplyr)
library(tidyr)
df %>%
pivot_longer(!c(Country, code), 
names_to = 'Year', 
values_to = 'Value',
names_pattern = "\w+_(\d+)")
# A tibble: 30 x 4
Country     code  Year    Value
<chr>       <chr> <chr>   <int>
1 Afghanistan AFG   1960  8996351
2 Afghanistan AFG   1961  9166764
3 Afghanistan AFG   1962  9345868
4 Afghanistan AFG   1963  9533954
5 Afghanistan AFG   1964  9731361
6 Albania     ALB   1960  1608800
7 Albania     ALB   1961  1659800
8 Albania     ALB   1962  1711319
9 Albania     ALB   1963  1762621
10 Albania     ALB   1964  1814135
# ... with 20 more rows

最新更新