A: hoe u de functie apply() op specifieke kolommen gebruikt
Vaak wilt u misschien de functie apply() gebruiken om een functie toe te passen op specifieke kolommen in een dataframe in R.
De functie apply() dwingt echter eerst alle kolommen in een dataframe om hetzelfde objecttype te hebben voordat een functie wordt toegepast, wat soms onbedoelde gevolgen kan hebben.
Een betere keuze is de functie lapply() , die de volgende basissyntaxis gebruikt:
df[c(' col1 ', ' col2 ')] <- lapply(df[c(' col1 ', ' col2 ')], my_function)
In dit specifieke voorbeeld wordt de functie my_function alleen toegepast op col1 en col2 in het dataframe.
Het volgende voorbeeld laat zien hoe u deze syntaxis in de praktijk kunt gebruiken.
Voorbeeld: pas een functie toe op specifieke kolommen in het dataframe
Stel dat we het volgende dataframe in R hebben:
#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
Stel nu dat we de volgende functie definiëren die de waarden met 2 vermenigvuldigt en vervolgens 1 optelt:
#define function
my_function <- function (x) x*2 + 1
We kunnen de volgende functie lapply() gebruiken om deze functie alleen toe te passen op de punten- en bouncekolommen in het dataframe:
#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
Uit het resultaat kunnen we zien dat we elke waarde in de kolommen punten en rebounds met 2 vermenigvuldigen en vervolgens 1 optellen.
Merk ook op dat de kolommen teams en assists ongewijzigd zijn gebleven.
Aanvullende bronnen
In de volgende tutorials wordt uitgelegd hoe u andere veelvoorkomende taken in R kunt uitvoeren:
Een gids voor apply(), lapply(), sapply() en tapply() in R
Hoe de transformatiefunctie in R te gebruiken