【发布时间】:2013-06-19 18:37:00
【问题描述】:
我有一个 data.frames 列表,每个 data.frames 中有多个列。每个 data.frame 具有相同的结构。 此外,我还有另一个包含多个 data.frames 的列表。
假设这是两个列表:
firstlist <- list(a=data.frame(AA=5:1,
BB=1:5),
b=data.frame(AA=5:1,
BB=1:5),
c=data.frame(AA=5:1,
BB=1:5))
secondlist <- list(a=data.frame(AA=1:10,
BB=c(0,0,1,0,0,1,1,0,0,0)),
b=data.frame(AA=1:10,
BB=c(0,1,0,0,0,0,1,0,0,0)),
c=data.frame(AA=1:10,
BB=c(1,0,0,0,0,1,1,0,0,0)))
现在我想将 CC 列添加到 firstlist 中的所有 data.frames 中,并将它们相应地填充到 secondlist 中 BB 列中的值。
问题是:我需要检查 firstlist 中 AA 或 BB 中的行是否包含 secondlist 中 AA 中的值,并用 secondlist 中 BB 中的值填充 firstlist 中的新列 CC。
上面示例数据的预期结果是:
> firstlist
$a
AA BB CC
1 5 1 0
2 4 2 0
3 3 3 1
4 2 4 0
5 1 5 0
$b
AA BB CC
1 5 1 0
2 4 2 1
3 3 3 0
4 2 4 1
5 1 5 0
$c
AA BB CC
1 5 1 1
2 4 2 0
3 3 3 0
4 2 4 0
5 1 5 1
我需要使用 For 循环还是有其他方法?
更新: 有关布尔数据,请参阅Thell's solution,有关所有数据类型,请参阅 eddie's solution。
提前谢谢你!
【问题讨论】:
-
您能否向我们展示您的数据的预期结果?第一部分对我来说有点不清楚......“我需要检查 firstlist 中的 AA 还是 BB 中的行......”
-
@Arun 我已经编辑了这个问题。添加了预期的结果。换句话说:我需要检查 firstlist 的每个 data.frame 中的 AA 或 BB 列中的任何行是否包含与 secondlist 的同名 data.frame 中 AA 列中的行相同的值。如果是这样,我需要用 secondlist 中 BB 的相应值填充 firstlist 中的新列 CC。听起来更复杂,但我不知道如何更好地描述它。
-
$b栏
CC0,1,0,1,0怎么样?你能解释一下吗? -
我在注释代码时遇到问题。这是因为在 secondlist $b 中,BB 列在 2 和 7 处为 1。在 firstlist 中,第 2 行 BB 和第 4 AA 行中有 2。
-
CC 真的是 TRUE/FALSE 还是只是一个例子?