按年份数据集列表的国家/地区 - 如何按国家和年份合并年份不是变量

时间:2017-12-20 18:12:03

标签: r excel

我在一个数据集中按国家/地区(行)和年份列表(列标题)列出了GDP值。我正在尝试将它与另一个数据集结合起来,其中值代表GINI。当“年”不是变量时,如何按国家和年份合并这两个海量数据集? (我如何操纵每个数据集,以便将“年份”作为一列引入,并且每年都有重复的国家代表?

即。从顶部数据框到图像中的底部数据框?

3 个答案:

答案 0 :(得分:0)

将顶部数据集从宽到长重塑,然后与其他数据集合并。有许多many个例子,用不同的方法在本网站上重塑数据。一个常见的方法是使用tidyr包,它有一个名为gather的函数,可以满足您的需要。

long_table <- tidyr::gather(wide_table, key = year, value = GDP, 1960:1962)

或您数据集中去年的任何内容。如果您还没有安装tidyr install.packages('tidyr')个套餐,则可以安装dput(..)个套餐。

下次请避免放置数据图片并提供可重复的数据,以便其他人更容易回答。您可以使用Clipboard.SetImage(img); rtftemp.Paste(); rtf.Select(rtf.TextLength, 0); rtf.SelectedRtf = rtftemp.Rtf; 来执行此操作。

答案 1 :(得分:0)

希望这有帮助!

#sample data (added 'X' before numeric year columns as R doesn't allow column name to start with digit)
df <- data.frame(Country_Name=c('Belgium','Benin'),
           X1960=c(123,234),
           X1961=c(567,890))

library(dplyr)
library(tidyr)

df_new <- df %>%
  gather(Year, GDP, -Country_Name)
df_new$Year <- gsub('X','',df_new$Year )
df_new

输出是:

  Country_Name Year GDP
1      Belgium 1960 123
2        Benin 1960 234
3      Belgium 1961 567
4        Benin 1961 890

PS:正如其他人已经建议的那样,您应该始终使用dput(df)分享示例数据)

答案 2 :(得分:0)

使用Excel中的数据,如果您使用Excel 2010或更高版本,则可以使用Power QueryGet & Transform取消忽略“年份”列。

这是代码,但您可以通过GUI

执行此操作

enter image description here

这就是结果,虽然我不得不格式化GDP列以获得科学和数字格式的组合,而且我在1962年比利时打错了

enter image description here