R: Как добавить столбец во фрейм данных на основе других столбцов


Вы можете использовать следующий базовый синтаксис, чтобы добавить столбец во фрейм данных в R на основе значений в других столбцах:

#add new column 'col3' with values based on columns 1 and 2
df$col3 <- with (df, ifelse (col1 > col2, value_if_true, value_if_false))

В следующих примерах показано, как использовать этот синтаксис на практике.

Пример 1. Добавление символьного столбца на основе других столбцов

В следующем коде показано, как добавить новый столбец символов на основе значений в других столбцах фрейма данных:

#create data frame
df <- data.frame(team=c('Mavs', 'Cavs', 'Spurs', 'Nets'),
 scored=c(99, 90, 84, 96),
 allowed=c(95, 80, 87, 95))

#view data frame
df

 team scored allowed
1 Mavs 99 95
2 Cavs 90 80
3 Spurs 84 87
4 Nets 96 95

#add 'result' column based on values in 'scored' and 'allowed' columns
df$result <- with (df, ifelse (scored > allowed, 'Win', 'Loss'))

#view updated data frame
df

 team scored allowed result
1 Mavs 99 95 Win
2 Cavs 90 80 Win
3 Spurs 84 87 Loss
4 Nets 96 95 Win

А следующий код показывает, как добавить новый столбец символов, который объединяет две функции ifelse() для создания трех возможных значений в новом столбце:

#create data frame
df <- data.frame(team=c('Mavs', 'Cavs', 'Spurs', 'Nets'),
 scored=c(99, 90, 84, 96),
 allowed=c(95, 80, 87, 95))

#view data frame
df

 team scored allowed
1 Mavs 99 95
2 Cavs 90 80
3 Spurs 84 87
4 Nets 96 95

#add 'quality' column based on values in 'scored' and 'allowed' columns
df$quality <- with (df, ifelse (scored > 95, 'great',
 ifelse (scored > 85, 'good', 'bad')))

#view updated data frame
df

 team scored allowed quality
1 Mavs 99 95 great
2 Cavs 90 80 good
3 Spurs 84 87 bad
4 Nets 96 95 great

Пример 2. Добавление числового столбца на основе других столбцов

В следующем коде показано, как добавить новый числовой столбец во фрейм данных на основе значений в других столбцах:

#create data frame
df <- data.frame(team=c('Mavs', 'Cavs', 'Spurs', 'Nets'),
 scored=c(99, 90, 84, 96),
 allowed=c(95, 80, 87, 95))

#view data frame
df

 team scored allowed
1 Mavs 99 95
2 Cavs 90 80
3 Spurs 84 87
4 Nets 96 95

#add 'lower_score' column based on values in 'scored' and 'allowed' columns
df$lower_score <- with (df, ifelse (scored > allowed, allowed, scored))

#view updated data frame
df

 team scored allowed lower_score
1 Mavs 99 95 95
2 Cavs 90 80 80
3 Spurs 84 87 84
4 Nets 96 95 95

Дополнительные ресурсы

Как добавить столбцы во фрейм данных в R
Как добавить пустой столбец во фрейм данных в R
Как добавить столбец индекса во фрейм данных в R