如何在 r 中使用管道运算符(附示例)


您可以在 R 中使用管道运算符 ( %>% ) 将一系列操作“通过管道”连接在一起。

该运算符最常与 R 中的dplyr包一起使用,以对数据帧执行一系列操作。

管道运算符的基本语法是:

 df %>% 
  do_this_operation %>% 
  then_do_this_operation %>%
  then_do_this_operation ...

管道运算符只是将一个操作的结果传递到其下面的下一个操作。

使用管道运算符的优点是它使代码非常易于阅读。

以下示例展示了如何在不同场景中使用 R 中内置的mtcars数据集使用管道运算符。

 #view first six rows of mtcars dataset
head(mtcars)

                   mpg cyl disp hp drat wt qsec vs am gear carb
Mazda RX4 21.0 6 160 110 3.90 2.620 16.46 0 1 4 4
Mazda RX4 Wag 21.0 6 160 110 3.90 2.875 17.02 0 1 4 4
Datsun 710 22.8 4 108 93 3.85 2.320 18.61 1 1 4 1
Hornet 4 Drive 21.4 6 258 110 3.08 3.215 19.44 1 0 3 1
Hornet Sportabout 18.7 8 360 175 3.15 3.440 17.02 0 0 3 2
Valiant 18.1 6 225 105 2.76 3,460 20.22 1 0 3 1

示例 1:使用管道运算符汇总变量

以下代码展示了如何使用管道运算符 ( %>% ) 按cyl变量进行分组,然后汇总mpg变量的平均值:

 library (dplyr)

#summarize mean mpg grouped by cyl
mtcars %>% 
  group_by(cyl) %>% 
  summarize(mean_mpg = mean(mpg))

# A tibble: 3 x 2
    cyl mean_mpg
      
1 4 26.7
2 6 19.7
3 8 15.1

从结果我们可以看出:

  • 缸值为 4 的汽车的平均 mpg 值为26.7
  • 缸值为 6 的汽车的平均 mpg 值为19.7
  • 缸值为 8 的汽车的平均 mpg 值为15.1

请注意管道运算符如何使代码的解释变得更容易。

基本上,他说:

  • 采用mtcars数据框。
  • cyl变量对其进行分组。
  • 然后总结mpg变量的平均值。

示例 2:使用管道运算符对多个变量进行分组和汇总

以下代码展示了如何使用管道运算符 ( %>% ) 对cylam变量进行分组,然后汇总mpg变量的平均值和hp变量的标准差:

 library (dplyr)

#summarize mean mpg and standard dev of hp grouped by cyl and am
mtcars %>% 
  group_by(cyl, am) %>% 
  summarize(mean_mpg = mean(mpg),
            sd_hp = sd(hp))

# A tibble: 6 x 4
# Groups: cyl[3]
    cyl am mean_mpg sd_hp
        
1 4 0 22.9 19.7 
2 4 1 28.1 22.7 
3 6 0 19.1 9.18
4 6 1 20.6 37.5 
5 8 0 15.0 33.4 
6 8 1 15.4 50.2 

从结果我们可以看出:

  • 对于 cyl 值为 4、am 值为 0 的汽车,平均 mpg 值为22.9 ,hp 值的标准偏差为19.7
  • 对于 cyl 值为 4、am 值为 1 的汽车,平均 mpg 值为28.1 ,hp 值的标准差为22.7

等等。

再次注意管道运算符如何使代码的解释变得更容易。

基本上,他说:

  • 采用mtcars数据框。
  • 按变量cylam对其进行分组。
  • 然后总结mpg变量的平均值和hp变量的标准差。

示例 3:使用管道运算符创建新变量

以下代码演示了如何将管道运算符 ( %>% ) 与dplyr包中的mutate函数结合使用,在 mtcars 数据框中创建两个新变量:

 library (dplyr)

#add two new variables in mtcars
new_mtcars <- mtcars %>%
                mutate(mpg2 = mpg*2,
                       mpg_root = sqrt(mpg))

#view first six rows of new data frame
head(new_mtcars)

   mpg cyl disp hp drat wt qsec vs am gear carb mpg2 mpg_root
1 21.0 6 160 110 3.90 2.620 16.46 0 1 4 4 42.0 4.582576
2 21.0 6 160 110 3.90 2.875 17.02 0 1 4 4 42.0 4.582576
3 22.8 4 108 93 3.85 2.320 18.61 1 1 4 1 45.6 4.774935
4 21.4 6 258 110 3.08 3.215 19.44 1 0 3 1 42.8 4.626013
5 18.7 8 360 175 3.15 3.440 17.02 0 0 3 2 37.4 4.324350
6 18.1 6 225 105 2.76 3.460 20.22 1 0 3 1 36.2 4.254409

从结果我们可以看出:

  • 新的mpg2列包含mpg列乘以 2 的值。
  • 新的mpg_root列包含mpg列中的值的平方根。

再次注意管道运算符如何使代码的解释变得更容易。

基本上,他说:

  • 采用mtcars数据框。
  • 创建一个名为mpg2的新列和一个名为mpg_root的新列。

相关:如何在 dplyr 中使用 transmute() 函数

其他资源

以下教程解释了如何使用 R 中的其他常用函数:

如何在 R 中使用波浪号运算符 (~)
如何在 R 中使用美元符号运算符 ($)
如何在 R 中使用“NOT IN”运算符
如何在 R 中使用 %in% 运算符

添加评论

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