r语言 - 如何将数据框从宽转换为长,并将一列的不同值分离为新列?


I have this dataframe (with dummy values)
Country lifeExp_1952 lifeExp_1962 pop_1952 pop_1962 gdp_1952 gdp_1962
A       1            4            7        10       13       16
B       2            5            8        11       14       17
C       3            6            9        12       15       18

我想把它转换成一个长格式,但有单独的列lifeExp, pop和gdp,这样它看起来像这样:

Country Year lifeExp pop gdp
A       1952 1       7   13
A       1962 4       10  16
B       1952 2       8   14
B       1962 5       11  17
C       1952 3       9   15 
C       1962 6       12  18

到目前为止,我已经能够使用shape2在同一列中使用lifeExp, pop和gdp提取年份,但我不知道如何为它们提供自己的列。

我们可以用pivot_longer

library(dplyr)
library(tidyr)
df1 %>%
pivot_longer(cols = -Country, names_to = c(".value", 'Year'), names_sep = "_")

与产出

# A tibble: 6 x 5
#  Country Year  lifeExp   pop   gdp
#  <chr>   <chr>   <int> <int> <int>
#1 A       1952        1     7    13
#2 A       1962        4    10    16
#3 B       1952        2     8    14
#4 B       1962        5    11    17
#5 C       1952        3     9    15
#6 C       1962        6    12    18

数据
df1 <- structure(list(Country = c("A", "B", "C"), lifeExp_1952 = 1:3, 
lifeExp_1962 = 4:6, pop_1952 = 7:9, pop_1962 = 10:12, gdp_1952 = 13:15, 
gdp_1962 = 16:18), class = "data.frame", row.names = c(NA, 
-3L))

相关内容

最新更新