簡體   English   中英

反連接不起作用 - 給出 0 行,為什么?

[英]anti-join not working - giving 0 rows, why?

我正在嘗試完全按照我多次使用的反連接來確定兩個數據集中的哪些行與兩個特定列不匹配。 出於某種原因,我在結果中不斷得到 0 行,我不明白為什么。

下面是兩個虛擬 df,其中包含我要比較的兩列 - 你會看到一個缺少一個條目(df1,SITE no2,PLOT no 8) - 所以當我使用反連接比較兩個 dfs 時,這個條目應該被退回,但我只得到 0 的結果。

a<- seq(1:3)
SITE <- rep(a, times = c(16,15,1))
PLOT <- c(1:16,1:7,9:16,1)
df1 <- data.frame(SITE,PLOT)
SITE <- rep(a, times = c(16,16,1))
PLOT <- c(rep(1:16,2),1)
df2 <- data.frame(SITE,PLOT)

df1                 df2
SITE    PLOT        SITE    PLOT
1           1       1        1
1           2       1        2
1           3       1        3
1           4       1        4
1           5       1        5
1           6       1        6
1           7       1        7
1           9       1        8
1           10      1        9
1           11      1        10
1           12      1        11
1           13      1        12
1           14      1        13
1           15      1        14
1           16      1        15
1           1       1        16
2           2       2        1
2           3       2        2
2           4       2        3
2           5       2        4
2           6       2        5
2           7       2        6
2           8       2        7
2           9       2        8
2           10      2        9
2           11      2        10
2           12      2        11
2           13      2        12
2           14      2        13
2           15      2        14
2           16      2        15
3           1       2        16
                    3        1


a <- anti_join(df1, df2, by=c('SITE', 'PLOT'))
a

<0 rows> (or 0-length row.names)

我確信答案很明顯,但我看不到。

答案可以在幫助文件中找到。

anti_join() 返回 x 中沒有匹配 y 的所有行。

因此,反轉df1df2的輸入將為您提供您所期望的。

anti_join(df2, df1, by=c('SITE', 'PLOT'))

#   SITE PLOT
# 1    2    8

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM