【发布时间】:2021-10-05 11:15:26
【问题描述】:
想象一下,我请四位游客评价他们在法国和西班牙这两个国家的经历,并告诉我他们去那里的年份。我可以将他们的数据放在这样的表格中:
Tourism_data_current = tibble("Tourist" = c(1:4), "France_Rating" = c(5,3,7,4), "France_Year" = c(2021, 2016, 2018, 2021), "Spain_Rating" = c(4,5,NA,NA), "Spain_Year" = c(2020,2017, NA, NA))
返回:
A tibble: 4 x 5
Tourist France_Rating France_Year Spain_Rating Spain_Year
<int> <dbl> <dbl> <dbl> <dbl>
1 1 5 2021 4 2020
2 2 3 2016 5 2017
3 3 7 2018 NA NA
4 4 4 2021 NA NA
现在,如果我决定我希望这个数据长而不是宽,以便我可以评估评级和年份之间的关系作为国家/地区的函数,我不知道如何进行。
理想的桌子应该是这样的(我假设):
A tibble: 6 x 4
Tourist Country Tour_Rating Tour_Year
<dbl> <chr> <dbl> <dbl>
1 1 France 5 2021
2 1 Spain 4 2020
3 2 France 3 2016
4 2 Spain 5 2017
5 3 France 7 2018
6 4 France 4 2021
此目标表是通过以下代码手动生成的:
Tourism_data_ideal = tibble("Tourist" = c(1,1,2,2,3,4), "Country" = c("France","Spain","France","Spain","France","France"), "Tour_Rating" = c(5,4,3,5,7,4), "Tour_Year" = c(2021,2020,2016,2017,2018,2021))
我假设我会使用 reshape 包的 melt 函数来做这个表格转换,但我不知道如何正确地做到这一点。到目前为止,我的尝试(融合一个变量的数据,然后再融合另一个变量)生成了包含两个 Country 列的表格,有时法国和西班牙占据同一行 - 所以我知道我做错了。
是否有直接的方法来处理?
【问题讨论】: