0

別のテーブルに特定の値がないことに基づいて、テーブルに余分な行を追加できるかどうか疑問に思っていました。これは私の状況がどのように見えるかです

2 列のテキスト ファイル

V1 V2
1  100
1  101
1  102
1  103
2  230
2  231
2  232
... ...

5 列のその他のテキスト ファイル

V1 V2 V3 V4 V5
1  100 a b c
1  101 a b c
1  103 a b c
2  231 a b c
2  232 a b c

最初のテキスト ファイルの V1 と V2 の値の組み合わせが 2 番目のテキスト ファイルに存在しない場合 (例では 1 102 と 2 230 は存在しません)、2 番目のファイルに V1 の値を含む行を追加します。最初のファイルからの V2 & V3、V4、および V5 は 0 に等しい

2 番目のファイルは次のようになります。

V1 V2 V3 V4 V5
1  100 a b c
1  101 a b c
1  102 0 0 0
1  103 a b c
2  230 0 0 0
2  231 a b c
2  232 a b c

R でこれを行うための適切なコマンドが見つかりません。誰か手を貸してもらえますか?

4

1 に答える 1

2

2 つのオブジェクトの名前が「DF1」と「DF2」であると仮定すると、merge次のように使用できます。

DFM <- merge(DF1, DF2, all = TRUE)
DFM
#   V1  V2   V3   V4   V5
# 1  1 100    a    b    c
# 2  1 101    a    b    c
# 3  1 102 <NA> <NA> <NA>
# 4  1 103    a    b    c
# 5  2 230 <NA> <NA> <NA>
# 6  2 231    a    b    c
# 7  2 232    a    b    c

0の代わりに本当に好む場合NAは、次のことができます。

# Convert the factors to characters
DFM[sapply(DFM, is.factor)] <- lapply(DFM[sapply(DFM, is.factor)], as.character)
# Identify the NA values and replace them with 0
DFM[is.na(DFM)] <- 0
DFM
#   V1  V2 V3 V4 V5
# 1  1 100  a  b  c
# 2  1 101  a  b  c
# 3  1 102  0  0  0
# 4  1 103  a  b  c
# 5  2 230  0  0  0
# 6  2 231  a  b  c
# 7  2 232  a  b  c
于 2013-02-27T09:43:52.837 に答える