R: como usar a função apply() em colunas específicas


Muitas vezes você pode querer usar a função apply() para aplicar uma função a colunas específicas em um quadro de dados em R.

No entanto, a função apply() primeiro força todas as colunas em um quadro de dados a terem o mesmo tipo de objeto antes de aplicar uma função, o que às vezes pode ter consequências indesejadas.

Uma escolha melhor é a função lapply() , que usa a seguinte sintaxe básica:

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

Este exemplo específico aplica a função my_function apenas a col1 e col2 no quadro de dados.

O exemplo a seguir mostra como usar essa sintaxe na prática.

Exemplo: aplicar uma função a colunas específicas no quadro de dados

Suponha que temos o seguinte quadro de dados em 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

Agora suponha que definimos a seguinte função que multiplica os valores por 2 e depois soma 1:

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

Podemos usar a seguinte função lapply() para aplicar esta função apenas às colunas de pontos e saltos no quadro de dados:

 #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

A partir do resultado, podemos ver que multiplicamos cada valor nas colunas de pontos e rebotes por 2 e depois adicionamos 1.

Observe também que as colunas de equipes e assistências permaneceram inalteradas.

Recursos adicionais

Os tutoriais a seguir explicam como realizar outras tarefas comuns em R:

Um guia para apply(), lapply(), sapply() e tapply() em R
Como usar a função de transformação em R

Add a Comment

O seu endereço de email não será publicado. Campos obrigatórios marcados com *