Как создать новые столбцы на основе значений других столбцов, используя R - PullRequest
0 голосов
/ 19 сентября 2018

У меня есть датафрейм (df) в r, и меня интересуют два столбца, df $ LEFT и df $ RIGHT.Я хотел бы создать два новых столбца, чтобы в df $ BEST у меня было меньшее число между LEFT и RIGHT для каждой строки.Аналогично, я хочу создать столбец df $ WORST, в котором хранится наименьшее число.

ID LEFT RIGHT
1  20   70
2  65   15
3  25   65

Я хотел бы получить это:

ID LEFT RIGHT BEST WORST
1  20   70    20   70
2  65   15    15   65
3  25   65    25   65

Как я могу это сделать?

Ответы [ 2 ]

0 голосов
/ 19 сентября 2018

Альтернативой является использование apply

> df$WORST <- apply(df[,-1], 1, min)
> df$BEST <- apply(df[,-1], 1, max)
> df
  ID LEFT RIGHT WORST BEST
1  1   20    70    20   70
2  2   65    15    15   65
3  3   25    65    25   65

Использование подхода @ akrun с transform:

> transform(df,
            WORST =  apply(df[,-1], 1, min),
            BEST = apply(df[,-1], 1, max))
0 голосов
/ 19 сентября 2018

Мы можем использовать pmin/pmax, чтобы получить соответствующие минимальные, максимальные значения двух столбцов

transform(df, BEST = pmin(LEFT, RIGHT), WORST = pmax(LEFT, RIGHT))
#  ID LEFT RIGHT BEST WORST
#1  1   20    70   20    70
#2  2   65    15   15    65
#3  3   25    65   25    65

data

df <- structure(list(ID = 1:3, LEFT = c(20L, 65L, 25L), RIGHT = c(70L, 
  15L, 65L)), class = "data.frame", row.names = c(NA, -3L))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...