Создайте новый столбец, выбирая значения из фрейма данных в зависимости от значений в том же фрейме данных в R - PullRequest
0 голосов
/ 28 февраля 2020

Я получил фрейм данных

   Z1  Z2  Z3  Z4
   AB  XX  1   100  
   BA  YY  2   200
   AB  YY  1   200
   BA  XX  2   100

И я хочу создать новый столбец с выбором Z1 или Z2 в зависимости от значений в Z3 и Z4.

Условия, если Z3 = h1 или Z4 = h10, тогда Z5 является Z1, иначе Z5 = Z1; таблица должна выглядеть так:

   Z1  Z2  Z3  Z4  Z5
   AB  XX  h1  h10 AB  
   BA  YY  h2  h20 YY
   AB  YY  h1  h20 AB
   BA  XX  h2  h10 BA

Для этого я делаю:

df = within(df,{
 Z5 == ifelse(df$Z3 == "h1" | df$Z4 == "h10", df$Z1,df$Z2)
})

Когда я делаю это, я не получаю значений в df $ Z5

1 Ответ

1 голос
/ 28 февраля 2020

Просто используйте ifelse напрямую:

df$Z5 <- ifelse(df$Z3 == "h1" | df$Z4 == "h10", df$Z1, df$Z2)
df

  Z1 Z2 Z3  Z4 Z5
1 AB XX h1 h10 AB
2 BA YY h2 h20 YY
3 AB YY h1 h20 AB
4 BA XX h2 h10 BA

Данные:

df <- data.frame(Z1=c("AB", "BA", "AB", "BA"),
                 Z2=c("XX", "YY", "YY", "XX"),
                 Z3=c("h1","h2","h1","h2"),
                 Z4=c("h10","h20","h20","h10"), stringsAsFactors=FALSE)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...