Jak zastosować funkcję do każdego wiersza za pomocą dplyr


Możesz użyć następującej podstawowej składni, aby zastosować funkcję do każdego wiersza ramki danych w R za pomocą funkcji dplyr:

 df %>%
  rowwise() %>% 
  mutate(mean_value = mean(c(col1, col2, col3), na. rm = TRUE ))

W tym konkretnym przykładzie obliczana jest średnia wartość col1 , col2 i col3 dla każdego wiersza w ramce danych, ale funkcję Mean() można zastąpić dowolną funkcją, dla której chcesz obliczyć inną metrykę.

Poniższe przykłady pokazują, jak zastosować tę składnię w praktyce z poniższą ramką danych zawierającą informacje o punktach zdobytych przez różnych koszykarzy w różnych meczach:

 #create data frame
df <- data. frame (game1=c(22, 25, 29, 13, 22, 30),
                 game2=c(12, 10, 6, 6, 8, 11),
                 game3=c(NA, 15, 15, 18, 22, 13))

#view data frame
df

  game1 game2 game3
1 22 12 NA
2 25 10 15
3 29 6 15
4 13 6 18
5 22 8 22
6 30 11 13

Przykład 1: Średnia z określonych kolumn w każdym wierszu

Poniższy kod pokazuje, jak obliczyć średnią wartość kolumn game1 i game3 dla każdego wiersza w ramce danych:

 library (dplyr)

#calculate mean of game1 and game3
df %>%
  rowwise() %>% 
  mutate(mean_points = mean(c(game1, game3), na. rm = TRUE ))

# A tibble: 6 x 4
#Rowwise: 
  game1 game2 game3 mean_points
           
1 22 12 NA 22  
2 25 10 15 20  
3 29 6 15 22  
4 13 6 18 15.5
5 22 8 22 22  
6 30 11 13 21.5

Z wyniku możemy zobaczyć:

  • Średnia wartość game1 i game3 w pierwszym rzędzie wynosi 22 .
  • Średnia wartość game1 i game3 w drugim rzędzie wynosi 20 .
  • Średnia wartość gry 1 i gry 3 w trzecim rzędzie wynosi 22 .

I tak dalej.

Przykład 2: Maksymalna liczba określonych kolumn w każdym wierszu

Poniższy kod pokazuje, jak obliczyć maksymalną wartość kolumn game2 i game3 dla każdego wiersza w ramce danych:

 library (dplyr)

#calculate max of game2 and game3
df %>%
  rowwise() %>% 
  mutate(max_points = max(c(game2, game3), na. rm = TRUE ))

# A tibble: 6 x 4
#Rowwise: 
  game1 game2 game3 max_points
          
1 22 12 NA 12
2 25 10 15 15
3 29 6 15 15
4 13 6 18 18
5 22 8 22 22
6 30 11 13 13

Z wyniku możemy zobaczyć:

  • Maksymalna wartość game2 i game3 w pierwszym rzędzie wynosi 12 .
  • Maksymalna wartość game2 i game3 w drugim rzędzie wynosi 15 .
  • Maksymalna wartość game2 i game3 w trzecim rzędzie wynosi 15 .

I tak dalej.

Przykład 3: Odchylenie standardowe określonych kolumn w każdym wierszu

Poniższy kod pokazuje, jak obliczyć odchylenie standardowe wartości w kolumnach gra2 i gra3 dla każdego wiersza w ramce danych:

 library (dplyr)

#calculate standard deviation of game2 and game3
df %>%
  rowwise() %>% 
  mutate(sd_points = sd(c(game2, game3), na. rm = TRUE ))

# A tibble: 6 x 4
#Rowwise: 
  game1 game2 game3 sd_points
         
1 22 12 NA NA   
2 25 10 15 3.54
3 29 6 15 6.36
4 13 6 18 8.49
5 22 8 22 9.90
6 30 11 13 1.41

Z wyniku możemy zobaczyć:

  • Odchylenie standardowe gry 2 i gry 3 w pierwszym wierszu to NA (ponieważ odchylenia standardowego nie można obliczyć na podstawie pojedynczej wartości).
  • Odchylenie standardowe gry 2 i gry 3 w drugim rzędzie wynosi 3,54 .
  • Odchylenie standardowe gry 2 i gry 3 w pierwszym rzędzie 6,36 .

I tak dalej.

Uwaga : pełną dokumentację funkcji rowwise() można znaleźć w dplyr tutaj .

Dodatkowe zasoby

Poniższe samouczki wyjaśniają, jak wykonywać inne typowe zadania za pomocą dplyr:

Jak policzyć różne wartości za pomocą dplyr
Jak sumować wiele kolumn za pomocą dplyr
Jak zamienić wiele wartości w ramce danych za pomocą dplyr

Dodaj komentarz

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