2017-02-15 8 views
2

У меня есть кадр данных (data.frame (test)) в R со следующей информацией.Заполните новый столбец в R из других столбцов на основе условного оператора

Columns1 | Column2 | Column3 
1 | 11 | 33 
3 | 34 | 56 
4 | 24 | 23 
5 | 74 | 64 
3 | 45 | 52 
2 | 54 | 53 
1 | 76 | 92 

Я пытаюсь создать новый столбец, который заполняется данными в колонках 2 и 3 на основе условного оператора столбца 1.

Я не могу показаться, чтобы выяснить, как написать соответствующее условна.

if (test$column1 == 3 || test$column1 == 2 || test$column1 == 1) { 
test$Newcolumn = test$column1 
} else { 
    test$NewColumn = test$column2 
} 

Конечный результат должен выглядеть следующим образом:

Columns1 | Column2 | Column3 | NewColumn 
1 | 11 | 33 | 11 
3 | 34 | 56 | 33 
4 | 24 | 23 | 23 
5 | 74 | 64 | 64 
3 | 45 | 52 | 45 
2 | 54 | 53 | 54 
1 | 76 | 92 | 76 
+0

Простой 'ifelse' как' ifelse (test $ column1% in% c (1,2,3), test $ column2, test $ column3) ' –

+1

Сделал это, спасибо. –

+0

рад, что я мог вам помочь –

ответ

0

Решение «простой ifelse, например ifelse (test $ column1% in% c (1,2,3), test $ column2, test $ column3)» by by joel.wilson.

0

С dplyr, предполагая mydf Ваш dataframe:

mydf %>% mutate(newColumn = ifelse(column1 %in% 1:3, column2, column3)) -> res 

Я предположил, есть опечатка в вашем вопросе и вы хотели для назначения column2 значения newColumn в случае выполнения условия.

+0

Да, это просто опечатка. Когда я запускаю свой код, он заполняет новый столбец только столбцом 1 или только столбцом 2. –