R: Как использовать функцию apply() для определенных столбцов


Часто вы можете использовать функцию apply() для применения функции к определенным столбцам во фрейме данных в R.

Однако функция apply() сначала заставляет все столбцы во фрейме данных иметь один и тот же тип объекта перед применением функции, что иногда может иметь непредвиденные последствия.

Лучшим выбором является функция lapply() , которая использует следующий базовый синтаксис:

df[c('col1', 'col2')] <- lapply(df[c('col1', 'col2')], my_function)

В этом конкретном примере функция my_function применяется только к столбцам col1 и col2 во фрейме данных.

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

Пример: применение функции к определенным столбцам фрейма данных

Предположим, у нас есть следующий фрейм данных в R:

#create data frame
df <- data.frame(team=c('A', 'A', 'A', 'A', 'B', 'B', 'B', 'B'),
 points=c(19, 22, 15, NA, 14, 25, 25, 25),
 rebounds=c(10, 6, 3, 7, 11, 13, 9, 12),
 assists=c(4, 4, 3, 6, 7, 5, 10, 8))

#view data frame
df

 team points rebounds assists
1 A 19 10 4
2 A 22 6 4
3 A 15 3 3
4 A NA 7 6
5 B 14 11 7
6 B 25 13 5
7 B 25 9 10
8 B 25 12 8

Теперь предположим, что мы определили следующую функцию, которая умножает значения на 2, а затем добавляет 1:

#define function
my_function <- function (x) x\*2 + 1

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

#apply function to specific columns
df[c('points', 'rebounds')] <- lapply(df[c('points', 'rebounds')], my_function)

#view updated data frame
df

 team points rebounds assists
1 A 39 21 4
2 A 45 13 4
3 A 31 7 3
4 A NA 15 6
5 B 29 23 7
6 B 51 27 5
7 B 51 19 10
8 B 51 25 8

Из вывода видно, что мы умножили каждое значение в столбцах очков и подборов на 2, а затем добавили 1.

Также обратите внимание, что столбцы « Команда» и « Ассистенты » остались без изменений.

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

В следующих руководствах объясняется, как выполнять другие распространенные задачи в R:

Руководство по apply(), lapply(), sapply() и tapply() в R
Как использовать функцию преобразования в R

Замечательно! Вы успешно подписались.
Добро пожаловать обратно! Вы успешно вошли
Вы успешно подписались на кодкамп.
Срок действия вашей ссылки истек.
Ура! Проверьте свою электронную почту на наличие волшебной ссылки для входа.
Успех! Ваша платежная информация обновлена.
Ваша платежная информация не была обновлена.