【发布时间】:2013-06-25 00:04:32
【问题描述】:
全部,
我有一个复杂的问题,即在 R 中合并两种不同类型的数据。我正在使用定向的 dyad-year 数据框架(A 与 B,B 与 A)。我想通过以下方式读取或合并来自国家/地区年份数据集中的数据。
假设国家年数据集 (CY) 中的变量 x 是我尝试合并到有向二元年数据集 (DDY) 中的感兴趣变量。在三年(1990-1992)期间只有四个横截面单元(A、B、C、D)的简化版本中,它看起来像这样。
country year x
A 1990 6.2352
A 1991 7.2342
A 1992 8.3902
B 1990 2.2342
B 1991 5.1292
B 1992 1.0001
C 1990 4.1202
C 1991 9.1202
C 1992 1.2011
D 1990 1.2910
D 1991 5.0001
D 1992 2.1111
我正在研究定向 dyad-year 数据集 (DDY),它已经包含许多其他感兴趣的变量。基本上,我想从CY 中获取x 并在DDY 中创建x1 和x2,匹配有向二元年数据集中的x1 与给定的x 的相应值从国家-年数据中提取年份,并对来自国家-年数据中变量x 的x2 执行相同的操作。
简而言之,我希望DDY 看起来像这样。
country1 country2 year x1 x2
A B 1990 6.2352 2.2342
A B 1991 7.2342 5.1292
A B 1992 8.3902 1.0001
A C 1990 6.2352 4.1202
A C 1991 7.2342 9.1202
A C 1992 8.3902 1.2011
A D 1990 6.2352 1.2910
A D 1991 7.2342 5.0001
A D 1992 8.3902 2.1111
B A 1990 2.2342 6.2352
B A 1991 5.1292 7.2342
B A 1992 1.0001 8.3902
...
每个有向二元年配对的数据从那里继续。
我不知道这是否是使用merge 命令的微妙过程,或者其他路线是否最合适。任何输入将不胜感激,如果有助于找到解决方案,我将提供有关我正在使用的数据的任何说明。
This previously asked question 显然是相关的。但是,由于在提出问题时没有提供可重现的代码,所以对于我想要做的事情,答案似乎有点迟钝。如果该解决方案是可行的方法,那么澄清它在做什么可能会有所帮助。
谢谢。
以下是可重现的代码。
country <- c("A", "A", "A", "B", "B", "B", "C", "C", "C", "D", "D", "D")
year <- c(1990, 1991, 1992, 1990, 1991, 1992, 1990, 1991, 1992, 1990, 1991, 1992)
x <- c(6.2352, 7.2342, 8.3902, 2.2342, 5.1292, 1.0001, 4.1202, 9.1202, 1.2011, 1.2910, 5.0001, 2.1111)
CY <- data.frame(country=country, year=year, x=x)
CY
country1 <- c("A", "A", "A", "A", "A", "A", "A", "A", "A", "B", "B", "B", "B", "B", "B", "B", "B", "B", "C", "C", "C", "C", "C", "C", "C", "C", "C", "D", "D", "D", "D", "D", "D", "D", "D", "D")
country2 <- c("B", "B", "B", "C", "C", "C", "D", "D", "D", "A", "A", "A", "C", "C", "C", "D", "D", "D", "A", "A", "A", "B", "B", "B", "D", "D", "D", "A", "A", "A", "B", "B", "B", "C", "C", "C")
year <- c(1990, 1991, 1992, 1990, 1991, 1992, 1990, 1991, 1992, 1990, 1991, 1992, 1990, 1991, 1992, 1990, 1991, 1992, 1990, 1991, 1992, 1990, 1991, 1992, 1990, 1991, 1992, 1990, 1991, 1992, 1990, 1991, 1992, 1990, 1991, 1992)
DDY <- data.frame(country1=country1, country2=country2, year=year)
DDY
【问题讨论】:
标签: r merge data-manipulation