如何使用 dplyr 将函数应用于每一行


您可以使用以下基本语法,使用 dplyr 函数将函数应用于 R 中数据帧的每一行:

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

此特定示例计算数据框中每行的col1col2col3的平均值,但您可以将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替换数据框中的多个值

添加评论

您的电子邮箱地址不会被公开。 必填项已用*标注