私は2つのデータフレームdf_a
,df_b
にする必要があります。一致する要素を複数取得するにはどうすればよいですか?
set.seed(143)
df_a <- data.frame(colA = sample(1:10, 10, replace=T), colB = sample(LETTERS[1:20],10))
df_a
# colA colB
#1 10 I
#2 1 D
#3 8 R
#4 5 F
#5 1 N
#6 10 P
#7 7 E
#8 6 S
#9 6 T
#10 4 C
df_b <- data.frame(colA = sample(1:10, 10, replace=T))
df_b
# colA
#1 9
#2 3
#3 9
#4 9
#5 3
#6 10
#7 10
#8 7
#9 4
#10 7
Iは、両方のデータフレームにおけるcolA
の照合に基づいてデータフレームdf_a
でcolB
の値でcolB
を更新しなければなりません。
df_a[match(df_b$colA, df_a$colA),'colB']
# [1] <NA> <NA> <NA> <NA> <NA> I I E C E
#Levels: C D E F I N P R S T
出力に一致する要素が2つ以上ありません(驚きではありません)。例えば、10
は、2つの値I
,P
を有するが、I
を与えるに過ぎない。
Expected Output(something like this, maybe?):
df_a[match(df_b$colA, df_a$colA),'colB']
# [1] <NA> <NA> <NA> <NA> <NA> I,P I,P E C E
#Levels: C D E F I N P R S T
match()機能のみ最初に一致した値を返すように、タスクを達成するためwhich()
又は%in%
ような任意の他の代替はありますか?
私は ''(= "で、colA" によってdf_b、df_a、all.x = TRUE)をマージ使用しますが、 'で、colA == 10 'をどうしますか? –
@ m-dz可能なすべての一致を検索する必要があります – Prradep
私のコメントのコードは、あなたが期待していることですか? –