1

2 つのデータ フレームがあるとします。

データ フレーム 1 (これを Data1 と呼びましょう):

V1     V2     
1     "AB"    
3     "XY"
5     "DH"
8     "ST"
7     "RE"

Data1 のコード:

V1 <- c(1,3,5,8,7)
V2 <- c("AB","XY", "DH", "ST","RE")
Data1 <- data.frame(V1,V2)

データ フレーム 2 (これを Data2 と呼びましょう):

V1     V2     
1     "AB"    
2     "ZZ"
3     "XY"
5     "DH"
8     "ST" 

Data2 のコード:

V1 <- c(1,2,3,5,8)
V2 <- c("AB","ZZ","XY","DH","ST")
Data2 <- data.frame(V1,V2)

お気づきのように、Data2 の 2 行目 (V2 の値は「ZZ」) は Data1 に存在せず、Data1 の最後の行 (V2 の値は「RE」) は Data2 に存在しません。

A)どちらのデータ フレームにも存在しないすべての V2 値のリストを作成したいと考えています。
この例では、「ZZ」と「RE」になります。

B)両方のデータ フレームに存在するすべての V2 値のリストを作成したいと思います。
この例では、結果は「AB」、「XY」、「DH」、「ST」になります。

4

2 に答える 2

1

式を使用して、 の%in%値がV2両方のデータフレームに存在するかどうかを確認できます。not 式 ( !) を使用して、両方のデータフレームに存在しないものを見つけ、両方の結果を結合します。

> rbind(Data1[!Data1$V2 %in% Data2$V2,], Data2[!Data2$V2 %in% Data1$V2,])
  V1 V2
5  7 RE
2  2 ZZ
> unique(rbind(Data1[Data1$V2 %in% Data2$V2,], Data2[Data2$V2 %in% Data1$V2,]))
  V1 V2
1  1 AB
2  3 XY
3  5 DH
4  8 ST

この最後の部分について: すべての V1、V2 の組み合わせが同じになる場合は、単純に次のように記述できます。

Data1[Data1$V2 %in% Data2$V2,]

数行のコードを節約できます。

于 2013-07-12T22:06:29.663 に答える