2012-02-14 24 views
0

我有一列L數據框,每列有兩列...一個鍵和一個值列。我想創建一個數據幀,其中第i列是第i個數據幀的值列。問題在於列表L中的不同數據幀具有稍微不同的關鍵字(大部分情況相同,但是從data.frame到data.frame產生或取出一對),所以使用cbind的簡單do.call不會削減它)。我打開了數據框的列表,並將鍵列聯合起來以獲得全部包含鍵的集合bigKeySet ...現在我想要做的就是構建這個data.frame,其中每行有一行此bigKeySet中的鍵值,以及列中的NA條目(如果該data.frame沒有該鍵值的條目)。但我不知道如何做到這一點 - 有什麼建議?如何通過插入NA來綁定不同長度的數據幀中的列?

回答

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的實例。

2

沒有一些樣本數據,我不知道,但:

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

將其鍵欄中的兩個數據幀相結合,並相應地命名值列。

相關問題