【发布时间】:2013-11-21 02:13:40
【问题描述】:
大家好,我正在使用 R 中的两个数据框列表。我想解决一个小问题,我在每个列表中都有相同数量的数据框,并且每个列表都位于相同的位置。我的两个列表的 dput 版本是下一个:
list1=structure(list(a1 = structure(list(a1 = c("001", "002", "003"
), b1 = c(12, 13, 12)), .Names = c("a1", "b1"), row.names = c(NA,
-3L), class = "data.frame"), a2 = structure(list(a1 = c("005",
"006", "009"), b1 = c(12, 16, 16)), .Names = c("a1", "b1"), row.names = c(NA,
-3L), class = "data.frame"), a3 = structure(list(a1 = c("011",
"012", "053"), b1 = c(2, 3, 12)), .Names = c("a1", "b1"), row.names = c(NA,
-3L), class = "data.frame")), .Names = c("a1", "a2", "a3"))
list2=structure(list(b1 = structure(list(d1 = c("001", "002", "003"
), c1 = c("A", "B", "C")), .Names = c("d1", "c1"), row.names = c(NA,
-3L), class = "data.frame"), b2 = structure(list(d1 = c("005",
"006", "009"), c1 = c("D", "E", "F")), .Names = c("d1", "c1"), row.names = c(NA,
-3L), class = "data.frame"), b3 = structure(list(d1 = c("011",
"012", "053"), c1 = c("G", "H", "I")), .Names = c("d1", "c1"), row.names = c(NA,
-3L), class = "data.frame")), .Names = c("b1", "b2", "b3"))
我想将list1 中的所有数据框与list2 中它们各自的数据框相匹配,考虑到list1 中元素的变量a1 和list2 中元素的变量d1 之间的匹配就像每个数据帧中的一个 ID,通过这个匹配,我会将c1 变量从分配在list2 中的每个数据帧添加到list1 中的数据帧。我想获得一个类似这样的新列表:
list.final
$a1
a1 b1 c1
001 12 A
002 13 B
003 12 C
$a2
a1 b1 c1
005 12 D
006 16 E
009 16 F
$a3
a1 b1 c1
011 2 G
012 3 H
053 12 I
我正在尝试构建一个函数来进行匹配,但它非常复杂,因为我只对单个列表有一些了解,在这里我必须处理两个可以包含 20 多个数据框的列表。如果我有一个函数,我会使用plyr 中的llply 函数来创建新列表,但我找不到解决方案。谢谢。
【问题讨论】:
标签: r