1

2 つの単純なデータフレームがある場合:

a <- 1:10
b <- c("a","b","c","d","e","f","g","h","i","j")
df1 <-data.frame(a,b)

c <- 1:7
d <- c("k","l","m","n","o","p","q")
df2 <-data.frame(c,d)

...そして、df1とdf2をそれぞれ「a」と「c」でマージしたかった:

df3= merge(df1, df2, by.x = "a", by.y = "c")

マージされなかった df1 の行のデータフレームを作成するにはどうすればよいですか? 例えば:

    a b
8   8 h
9   9 i
10 10 j

どんな助けでもありがたく受け取られます。

EDIT コメントの提案を使用して、次のことができます。

check = setdiff(df1$a, df2$c)

正しい 8:10 が得られるので、これは素晴らしいことですが、リストされている df1 の他の列が必要です...これは setdiff でも実行できますか?

4

2 に答える 2

0

コメントごと:

check = setdiff(df1$a, df2$c)

alldiff <- df1[1:dim(df1)[1] %in% check,]

dim(df1)[1](これは、たとえば、と同じであることに注意してくださいlength(df1$a)

2行目はコドレミファのクレジット。

于 2013-09-26T13:23:03.590 に答える