2017-07-12 12 views
0

これは私が取り組んでいる2つのデータフレームの例です。 「クレーム」は「lastaction」よりも行が少なくなっています。Rで平らでないデータフレームを共通の列で結合し、空の要素をNAで埋めます

enter image description here

私の試みは、次のエラーを与えます。 [< -.data.frame(TMP、値、値= NA)で

newtable <- merge(claims, lastaction, by = "X", all = TRUE) 

エラー:既存の列

newtable <- merge(claims, lastaction, by.x = claims$X, by.y = lastaction$X, all = TRUE) 

後の穴を残して 新しい列fix.by(by.x、x)のエラー: 'by'は列数と一致する必要があります

+0

あなたの予想される出力は何を?作品 – Prradep

答えて

0

merge機能が正常に機能します。両方のデータフレームは同じ列名Xを持つので、byを使用してマージすることができます。

claims = data.frame(X = c(10,24,30,35,64,104), 
        TransactionDateTime = c('JUL-15','APR-17','SEP-15','JUL-15','APR-16','SEP-15')) 
claims 
#  X TransactionDateTime 
# 1 10    JUL-15 
# 2 24    APR-17 
# 3 30    SEP-15 
# 4 35    JUL-15 
# 5 64    APR-16 
# 6 104    SEP-15 

lastaction = data.frame(X = c(10,24,30,35,40,57), lastvalue = c(6,1,4,6,6,1), 
         Approvalmonth = c('15-OCT','17-JAN','16-MAR','15-OCT','15-SEP','17-JUN'), 
         lastvalue = c(0,1,0,0,0,1)) 
lastaction 
# X lastvalue Approvalmonth lastvalue 
# 1 10   6  15-OCT   0 
# 2 24   1  17-JAN   1 
# 3 30   4  16-MAR   0 
# 4 35   6  15-OCT   0 
# 5 40   6  15-SEP   0 
# 6 57   1  17-JUN   1 

merge(claims, lastaction, by = "X", all = TRUE) 
#  X TransactionDateTime lastvalue Approvalmonth lastvalue.1 
# 1 10    JUL-15   6  15-OCT   0 
# 2 24    APR-17   1  17-JAN   1 
# 3 30    SEP-15   4  16-MAR   0 
# 4 35    JUL-15   6  15-OCT   0 
# 5 40    <NA>   6  15-SEP   0 
# 6 57    <NA>   1  17-JUN   1 
# 7 64    APR-16  NA   <NA>   NA 
# 8 104    SEP-15  NA   <NA>   NA 

dplyrfull_join同様

dplyr::full_join(claims, lastaction, by = 'X') 
    X TransactionDateTime lastvalue Approvalmonth lastvalue.y 
1 10    JUL-15   6  15-OCT   6 
2 24    APR-17   1  17-JAN   1 
3 30    SEP-15   4  16-MAR   4 
4 35    JUL-15   6  15-OCT   6 
5 64    APR-16  NA   <NA>   NA 
6 104    SEP-15  NA   <NA>   NA 
7 40    <NA>   6  15-SEP   6 
8 57    <NA>   1  17-JUN   1 
+0

ありがとう! full_joinは魅力的に機能しました。 –

関連する問題