Odp.: jak używać funkcji apply() w określonych kolumnach


Często możesz chcieć użyć funkcji Apply() , aby zastosować funkcję do określonych kolumn w ramce danych w R.

Jednak funkcja Apply() najpierw wymusza, aby wszystkie kolumny w ramce danych miały ten sam typ obiektu przed zastosowaniem funkcji, co czasami może mieć niezamierzone konsekwencje.

Lepszym wyborem jest funkcja lapply() , która wykorzystuje następującą podstawową składnię:

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

W tym konkretnym przykładzie funkcja my_function dotyczy tylko col1 i col2 w ramce danych.

Poniższy przykład pokazuje, jak zastosować tę składnię w praktyce.

Przykład: zastosuj funkcję do określonych kolumn w ramce danych

Załóżmy, że mamy następującą ramkę danych w 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 rebound assists
1 A 19 10 4
2 A 22 6 4
3 to 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

Załóżmy teraz, że zdefiniujemy następującą funkcję, która mnoży wartości przez 2, a następnie dodaje 1:

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

Możemy użyć następującej funkcji lapply() , aby zastosować tę funkcję tylko do kolumn punktów i odbić w ramce danych:

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

#view updated data frame
df

  team points rebound 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

Z wyniku widzimy, że mnożymy każdą wartość w kolumnach punktów i zbiórek przez 2, a następnie dodajemy 1.

Należy również pamiętać, że kolumny drużyn i asyst pozostały niezmienione.

Dodatkowe zasoby

Poniższe samouczki wyjaśniają, jak wykonywać inne typowe zadania w języku R:

Przewodnik po Apply(), lapply(), sapply() i tapply() w R
Jak korzystać z funkcji transformacji w R

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *