如何通过插入NA来从不同长度的数据帧中绑定列?

时间:2012-02-14 22:46:01

标签: r dataframe

我有一个数据框列表L,每列有两列......一个键和一个值列。我想创建一个数据帧,其中第i列是第i个数据帧的值列。问题是列表L中的不同数据帧具有稍微不同的键(大多数情况下相同但从data.frame到data.frame提供或取一些)所以带有cbind的简单do.call将不会切割它)。我循环遍历数据框列表并使用关键列的联合来获得一个包含所有密钥的bigKeySet ...我现在要做的是构建这个data.frame,其中每个都有一行如果该data.frame没有该键的条目,则此bigKeySet中的键和列中的NA条目。但是,我不知道该怎么做 - 有什么建议吗?

2 个答案:

答案 0 :(得分:2)

没有一些样本数据我不确定但是:

merge(df1,df2,all=T,by='keys') 

将按键列合并两个数据框,并相应地命名值列。

答案 1 :(得分:1)

假设您有一个函数valueForKey(),它返回一个键(或等效语句)的值:

myKeys <- c('foo', 'bar')
bigKeySet <- c('foo', 'baz', 'bar')
result <- as.vector(mapply(function(x) { if (x %in% myKeys) print(valueForKey(x)) else print(NA) }, bigKeySet))

您可以将result绑定到您感兴趣的数据框。对myKeys的所有实例重复。