2017-01-16 2 views
1

Я искал ваши сообщения, говорящие о замене значения столбца одной из второй базы столбцов на условиях, но они не работали.замените каждое значение трех столбцов кадра данных на значение столбца во втором кадре данных в R

Я попытаюсь упростить два кадра данных, у меня есть:

> paircomparison 
V1 V2 V3 V4 

A1 A1 A2 A2 
A1 A1 A3 A3 
A1 A1 A4 A4 
A2 A2 A1 A1 
A2 A2 A3 A3 
A2 A2 A4 A4 
A3 A3 A1 A1 
A3 A3 A2 A2 
A3 A3 A4 A4 
A4 A4 A1 A1 
A4 A4 A2 A2 
A4 A4 A3 A3 

>Ids 

V1 V2 
A1 London 
A2 Roma 
A3 Paris 
A4 New York 

Я хотел заменить каждый раз, когда значение в paircomparison [, 1: 4] == значения в $ V1 Ids со значением из идентификаторов $ V2.

Я пытался следующий цикл:

for (x in paircomparison[,1:4]){ 
    if (x == Ids[,1]){ 
     x <- Ids[,2])} 
} 

, но он не работает. Я довольно новичок в скрипте R, и, скорее всего, мне не хватает некоторых шагов в скрипте.

ответ

0

Мы можем попробовать

paircomparison[] <- lapply(paircomparison, function(x) setNames(Ids$V2, Ids$V1)[x]) 
paircomparison 
#   V1  V2  V3  V4 
#1 London London  Roma  Roma 
#2 London London Paris Paris 
#3 London London New York New York 
#4  Roma  Roma London London 
#5  Roma  Roma Paris Paris 
#6  Roma  Roma New York New York 
#7  Paris Paris London London 
#8  Paris Paris  Roma  Roma 
#9  Paris Paris New York New York 
#10 New York New York London London 
#11 New York New York  Roma  Roma 
#12 New York New York Paris Paris 

Или просто

paircomparison[] <- setNames(Ids$V2, Ids$V1)[as.matrix(paircomparison)] 
0

Мы можем unlist в dataframe и использовать match для сравнения значений

paircomparison[] <- Ids$V2[match(unlist(paircomparison), Ids$V1)] 
paircomparison 

#  V1  V2  V3  V4 
#1 London London Roma Roma 
#2 London London Paris Paris 
#3 London London NewYork NewYork 
#4  Roma Roma London London 
#5  Roma Roma Paris Paris 
#6  Roma Roma NewYork NewYork 
#7 Paris Paris London London 
#8 Paris Paris Roma Roma 
#9 Paris Paris NewYork NewYork 
#10 NewYork NewYork London London 
#11 NewYork NewYork Roma Roma 
#12 NewYork NewYork Paris Paris 
Смежные вопросы