2017-02-01 7 views
-1

私はRの初心者ですが、何か助けが必要な問題に遭遇しました。1列目と2列目が特定の値であれば、2列のデータをループして3列目のデータを返します

データCSVファイルに2つの列があるとします。

また、私はCSVファイル(Yと呼ぶ)と照合するために使用する別のデータファイルもあります。

Xには、a、b、cの3つのデータ列があります。

Yは同じヘッダを持つデータの3つの列があります、B、

cをI aとb場合RはY.

およびBとXの列A、BをチェックしたいとXのaとbをそれぞれYに一致させるには、Yの列cを使用してXの列cを置き換えます。

Xのどの列cが重要ではありません。

このコードはどのように作成する必要がありますか?

X < - as.vector(A、B、C) Y < - as.vector(A、B、C)

xの中...

任意の助けが理解されるであろう!

+3

再現性の例を教えてください。 – OmaymaS

+2

[ask]と[mcve]をお読みください。次に、質問を編集します。 – jogo

答えて

0

参加構成を使用してください: 私はdplyrを使用することをお勧めしますが、mergeも可能です。で

set.seed(314) 

x <- data.frame(a = sample(1:10,10), 
       b = sample(1:10,10), 
       c = sample(1:10,10)) 

y <- data.frame(a = sample(1:10,10), 
       b = sample(1:10,10), 
       c = sample(1:10,10)) 

library(dplyr) 

x %>% left_join(y, by=c('a','b')) %>% mutate(c = ifelse(!is.na(c.y),c.y,c.x)) 

結果(私は説明のためc.xとc.yカラムを維持):

a b c.x c.y c 
1 1 4 7 NA 7 
2 3 2 5 NA 5 
3 7 9 9 NA 9 
4 2 8 2 NA 2 
5 8 10 1 NA 1 
6 6 7 3 NA 3 
7 10 3 10 NA 10 
8 5 5 6 NA 6 
9 9 1 8 4 4 
10 4 6 4 NA 4 
関連する問題