Dplyr을 사용하여 각 행에 함수를 적용하는 방법


dplyr 함수를 사용하여 R의 데이터 프레임의 각 행에 함수를 적용하려면 다음 기본 구문을 사용할 수 있습니다.

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

이 특정 예에서는 데이터 프레임의 각 행에 대해 col1 , col2col3 의 평균 값을 계산하지만 Mean() 함수를 다른 측정항목을 계산하려는 함수로 대체할 수 있습니다.

다음 예에서는 다양한 게임에서 다양한 농구 선수가 득점한 점수에 대한 정보가 포함된 다음 데이터 프레임에서 이 구문을 실제로 사용하는 방법을 보여줍니다.

 #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

예시 1: 각 행의 특정 열 평균

다음 코드는 데이터 프레임의 각 행에 대한 game1game3 열의 평균 값을 계산하는 방법을 보여줍니다.

 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

결과에서 우리는 다음을 볼 수 있습니다:

  • 첫 번째 행의 game1과 game3의 평균 값은 22 입니다.
  • 두 번째 행의 game1과 game3의 평균 값은 20 입니다.
  • 세 번째 행의 game1과 game3의 평균 값은 22 입니다.

등등.

예시 2: 각 행의 특정 열의 최대 개수

다음 코드는 데이터 프레임의 각 행에 대한 game2game3 열의 최대값을 계산하는 방법을 보여줍니다.

 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

결과에서 우리는 다음을 볼 수 있습니다:

  • 첫 번째 행에 있는 game2 및 game3의 최대값은 12 입니다.
  • 두 번째 행에 있는 game2 및 game3의 최대값은 15 입니다.
  • 세 번째 행에 있는 game2 및 game3의 최대값은 15 입니다.

등등.

예시 3: 각 행의 특정 열의 표준편차

다음 코드는 데이터 프레임의 각 행에 대해 game2game3 열 값의 표준 편차를 계산하는 방법을 보여줍니다.

 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

결과에서 우리는 다음을 볼 수 있습니다:

  • 첫 번째 행의 game2와 game3의 표준편차는 NA입니다. 표준편차는 단일 값으로 계산할 수 없기 때문입니다.
  • 두 번째 행의 game2와 game3의 표준편차는 3.54 입니다.
  • 첫 번째 행의 game2와 game3의 표준편차 6.36 .

등등.

참고 : dplyr의 rowwise() 함수에 대한 전체 문서는 여기에서 찾을 수 있습니다.

추가 리소스

다음 튜토리얼에서는 dplyr을 사용하여 다른 일반적인 작업을 수행하는 방법을 설명합니다.

dplyr을 사용하여 고유 값을 계산하는 방법
dplyr을 사용하여 여러 열의 합계를 계산하는 방법
dplyr을 사용하여 데이터 프레임의 여러 값을 바꾸는 방법

의견을 추가하다

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다