Search code examples
rmagrittr

Working on a subset of data/specific rows (based on a certain condition) using the pipe operator


The following example works using "[". However I would like to know whether there is a more tidyverse-like approach to change the values of specific rows using the %>% operator.

Assume I want change the iris data set but without manipulating the rows where the species is versicolor.

library(dplyr)

data("iris")

iris$Species <- as.character(iris$Species)

iris[iris$Species!="versicolor",] <- iris[iris$Species!="versicolor",] %>% 

  mutate(

    Sepal.Length = Sepal.Length * 100,

    Species = paste0(Species, "_o0o0o0o0o0o0")

  )

distinct(iris, Species, .keep_all = TRUE)

Desired output:

  Sepal.Length Sepal.Width Petal.Length Petal.Width                Species
1          510         3.5          1.4         0.2    setosa_o0o0o0o0o0o0
2            7         3.2          4.7         1.4             versicolor
3          630         3.3          6.0         2.5 virginica_o0o0o0o0o0o0

Solution

  • I'd just use if_else within mutate

    library(dplyr)
    
    data("iris")
    
    iris1 <- iris %>% 
      mutate(Species = as.character(Species),
             Sepal.Length = if_else(Species != "versicolor", Sepal.Length * 100, Sepal.Length),
             Species2     = if_else(Species != "versicolor", paste0(Species, "_o0o0o0o0o0o0"), Species))
    
    iris1  
    
    #>     Sepal.Length Sepal.Width Petal.Length Petal.Width    Species
    #> 1          510.0         3.5          1.4         0.2     setosa
    #> 2          490.0         3.0          1.4         0.2     setosa
    #> 3          470.0         3.2          1.3         0.2     setosa
    #> 4          460.0         3.1          1.5         0.2     setosa
    #> 5          500.0         3.6          1.4         0.2     setosa
    #> 6          540.0         3.9          1.7         0.4     setosa
    #> 7          460.0         3.4          1.4         0.3     setosa
    #> 8          500.0         3.4          1.5         0.2     setosa
    #> 9          440.0         2.9          1.4         0.2     setosa
    #> 10         490.0         3.1          1.5         0.1     setosa
    #> 11         540.0         3.7          1.5         0.2     setosa
    #> 12         480.0         3.4          1.6         0.2     setosa
    #> 13         480.0         3.0          1.4         0.1     setosa
    #> 14         430.0         3.0          1.1         0.1     setosa
    #> 15         580.0         4.0          1.2         0.2     setosa
    #> 16         570.0         4.4          1.5         0.4     setosa
    #> 17         540.0         3.9          1.3         0.4     setosa
    #> 18         510.0         3.5          1.4         0.3     setosa
    #> 19         570.0         3.8          1.7         0.3     setosa
    #> 20         510.0         3.8          1.5         0.3     setosa
    #> 21         540.0         3.4          1.7         0.2     setosa
    #> 22         510.0         3.7          1.5         0.4     setosa
    #> 23         460.0         3.6          1.0         0.2     setosa
    #> 24         510.0         3.3          1.7         0.5     setosa
    #> 25         480.0         3.4          1.9         0.2     setosa
    #> 26         500.0         3.0          1.6         0.2     setosa
    #> 27         500.0         3.4          1.6         0.4     setosa
    #> 28         520.0         3.5          1.5         0.2     setosa
    #> 29         520.0         3.4          1.4         0.2     setosa
    #> 30         470.0         3.2          1.6         0.2     setosa
    #> 31         480.0         3.1          1.6         0.2     setosa
    #> 32         540.0         3.4          1.5         0.4     setosa
    #> 33         520.0         4.1          1.5         0.1     setosa
    #> 34         550.0         4.2          1.4         0.2     setosa
    #> 35         490.0         3.1          1.5         0.2     setosa
    #> 36         500.0         3.2          1.2         0.2     setosa
    #> 37         550.0         3.5          1.3         0.2     setosa
    #> 38         490.0         3.6          1.4         0.1     setosa
    #> 39         440.0         3.0          1.3         0.2     setosa
    #> 40         510.0         3.4          1.5         0.2     setosa
    #> 41         500.0         3.5          1.3         0.3     setosa
    #> 42         450.0         2.3          1.3         0.3     setosa
    #> 43         440.0         3.2          1.3         0.2     setosa
    #> 44         500.0         3.5          1.6         0.6     setosa
    #> 45         510.0         3.8          1.9         0.4     setosa
    #> 46         480.0         3.0          1.4         0.3     setosa
    #> 47         510.0         3.8          1.6         0.2     setosa
    #> 48         460.0         3.2          1.4         0.2     setosa
    #> 49         530.0         3.7          1.5         0.2     setosa
    #> 50         500.0         3.3          1.4         0.2     setosa
    #> 51           7.0         3.2          4.7         1.4 versicolor
    #> 52           6.4         3.2          4.5         1.5 versicolor
    #> 53           6.9         3.1          4.9         1.5 versicolor
    #> 54           5.5         2.3          4.0         1.3 versicolor
    #> 55           6.5         2.8          4.6         1.5 versicolor
    #> 56           5.7         2.8          4.5         1.3 versicolor
    #> 57           6.3         3.3          4.7         1.6 versicolor
    #> 58           4.9         2.4          3.3         1.0 versicolor
    #> 59           6.6         2.9          4.6         1.3 versicolor
    #> 60           5.2         2.7          3.9         1.4 versicolor
    #> 61           5.0         2.0          3.5         1.0 versicolor
    #> 62           5.9         3.0          4.2         1.5 versicolor
    #> 63           6.0         2.2          4.0         1.0 versicolor
    #> 64           6.1         2.9          4.7         1.4 versicolor
    #> 65           5.6         2.9          3.6         1.3 versicolor
    #> 66           6.7         3.1          4.4         1.4 versicolor
    #> 67           5.6         3.0          4.5         1.5 versicolor
    #> 68           5.8         2.7          4.1         1.0 versicolor
    #> 69           6.2         2.2          4.5         1.5 versicolor
    #> 70           5.6         2.5          3.9         1.1 versicolor
    #> 71           5.9         3.2          4.8         1.8 versicolor
    #> 72           6.1         2.8          4.0         1.3 versicolor
    #> 73           6.3         2.5          4.9         1.5 versicolor
    #> 74           6.1         2.8          4.7         1.2 versicolor
    #> 75           6.4         2.9          4.3         1.3 versicolor
    #> 76           6.6         3.0          4.4         1.4 versicolor
    #> 77           6.8         2.8          4.8         1.4 versicolor
    #> 78           6.7         3.0          5.0         1.7 versicolor
    #> 79           6.0         2.9          4.5         1.5 versicolor
    #> 80           5.7         2.6          3.5         1.0 versicolor
    #> 81           5.5         2.4          3.8         1.1 versicolor
    #> 82           5.5         2.4          3.7         1.0 versicolor
    #> 83           5.8         2.7          3.9         1.2 versicolor
    #> 84           6.0         2.7          5.1         1.6 versicolor
    #> 85           5.4         3.0          4.5         1.5 versicolor
    #> 86           6.0         3.4          4.5         1.6 versicolor
    #> 87           6.7         3.1          4.7         1.5 versicolor
    #> 88           6.3         2.3          4.4         1.3 versicolor
    #> 89           5.6         3.0          4.1         1.3 versicolor
    #> 90           5.5         2.5          4.0         1.3 versicolor
    #> 91           5.5         2.6          4.4         1.2 versicolor
    #> 92           6.1         3.0          4.6         1.4 versicolor
    #> 93           5.8         2.6          4.0         1.2 versicolor
    #> 94           5.0         2.3          3.3         1.0 versicolor
    #> 95           5.6         2.7          4.2         1.3 versicolor
    #> 96           5.7         3.0          4.2         1.2 versicolor
    #> 97           5.7         2.9          4.2         1.3 versicolor
    #> 98           6.2         2.9          4.3         1.3 versicolor
    #> 99           5.1         2.5          3.0         1.1 versicolor
    #> 100          5.7         2.8          4.1         1.3 versicolor
    #> 101        630.0         3.3          6.0         2.5  virginica
    #> 102        580.0         2.7          5.1         1.9  virginica
    #> 103        710.0         3.0          5.9         2.1  virginica
    #> 104        630.0         2.9          5.6         1.8  virginica
    #> 105        650.0         3.0          5.8         2.2  virginica
    #> 106        760.0         3.0          6.6         2.1  virginica
    #> 107        490.0         2.5          4.5         1.7  virginica
    #> 108        730.0         2.9          6.3         1.8  virginica
    #> 109        670.0         2.5          5.8         1.8  virginica
    #> 110        720.0         3.6          6.1         2.5  virginica
    #> 111        650.0         3.2          5.1         2.0  virginica
    #> 112        640.0         2.7          5.3         1.9  virginica
    #> 113        680.0         3.0          5.5         2.1  virginica
    #> 114        570.0         2.5          5.0         2.0  virginica
    #> 115        580.0         2.8          5.1         2.4  virginica
    #> 116        640.0         3.2          5.3         2.3  virginica
    #> 117        650.0         3.0          5.5         1.8  virginica
    #> 118        770.0         3.8          6.7         2.2  virginica
    #> 119        770.0         2.6          6.9         2.3  virginica
    #> 120        600.0         2.2          5.0         1.5  virginica
    #> 121        690.0         3.2          5.7         2.3  virginica
    #> 122        560.0         2.8          4.9         2.0  virginica
    #> 123        770.0         2.8          6.7         2.0  virginica
    #> 124        630.0         2.7          4.9         1.8  virginica
    #> 125        670.0         3.3          5.7         2.1  virginica
    #> 126        720.0         3.2          6.0         1.8  virginica
    #> 127        620.0         2.8          4.8         1.8  virginica
    #> 128        610.0         3.0          4.9         1.8  virginica
    #> 129        640.0         2.8          5.6         2.1  virginica
    #> 130        720.0         3.0          5.8         1.6  virginica
    #> 131        740.0         2.8          6.1         1.9  virginica
    #> 132        790.0         3.8          6.4         2.0  virginica
    #> 133        640.0         2.8          5.6         2.2  virginica
    #> 134        630.0         2.8          5.1         1.5  virginica
    #> 135        610.0         2.6          5.6         1.4  virginica
    #> 136        770.0         3.0          6.1         2.3  virginica
    #> 137        630.0         3.4          5.6         2.4  virginica
    #> 138        640.0         3.1          5.5         1.8  virginica
    #> 139        600.0         3.0          4.8         1.8  virginica
    #> 140        690.0         3.1          5.4         2.1  virginica
    #> 141        670.0         3.1          5.6         2.4  virginica
    #> 142        690.0         3.1          5.1         2.3  virginica
    #> 143        580.0         2.7          5.1         1.9  virginica
    #> 144        680.0         3.2          5.9         2.3  virginica
    #> 145        670.0         3.3          5.7         2.5  virginica
    #> 146        670.0         3.0          5.2         2.3  virginica
    #> 147        630.0         2.5          5.0         1.9  virginica
    #> 148        650.0         3.0          5.2         2.0  virginica
    #> 149        620.0         3.4          5.4         2.3  virginica
    #> 150        590.0         3.0          5.1         1.8  virginica
    #>                   Species2
    #> 1      setosa_o0o0o0o0o0o0
    #> 2      setosa_o0o0o0o0o0o0
    #> 3      setosa_o0o0o0o0o0o0
    #> 4      setosa_o0o0o0o0o0o0
    #> 5      setosa_o0o0o0o0o0o0
    #> 6      setosa_o0o0o0o0o0o0
    #> 7      setosa_o0o0o0o0o0o0
    #> 8      setosa_o0o0o0o0o0o0
    #> 9      setosa_o0o0o0o0o0o0
    #> 10     setosa_o0o0o0o0o0o0
    #> 11     setosa_o0o0o0o0o0o0
    #> 12     setosa_o0o0o0o0o0o0
    #> 13     setosa_o0o0o0o0o0o0
    #> 14     setosa_o0o0o0o0o0o0
    #> 15     setosa_o0o0o0o0o0o0
    #> 16     setosa_o0o0o0o0o0o0
    #> 17     setosa_o0o0o0o0o0o0
    #> 18     setosa_o0o0o0o0o0o0
    #> 19     setosa_o0o0o0o0o0o0
    #> 20     setosa_o0o0o0o0o0o0
    #> 21     setosa_o0o0o0o0o0o0
    #> 22     setosa_o0o0o0o0o0o0
    #> 23     setosa_o0o0o0o0o0o0
    #> 24     setosa_o0o0o0o0o0o0
    #> 25     setosa_o0o0o0o0o0o0
    #> 26     setosa_o0o0o0o0o0o0
    #> 27     setosa_o0o0o0o0o0o0
    #> 28     setosa_o0o0o0o0o0o0
    #> 29     setosa_o0o0o0o0o0o0
    #> 30     setosa_o0o0o0o0o0o0
    #> 31     setosa_o0o0o0o0o0o0
    #> 32     setosa_o0o0o0o0o0o0
    #> 33     setosa_o0o0o0o0o0o0
    #> 34     setosa_o0o0o0o0o0o0
    #> 35     setosa_o0o0o0o0o0o0
    #> 36     setosa_o0o0o0o0o0o0
    #> 37     setosa_o0o0o0o0o0o0
    #> 38     setosa_o0o0o0o0o0o0
    #> 39     setosa_o0o0o0o0o0o0
    #> 40     setosa_o0o0o0o0o0o0
    #> 41     setosa_o0o0o0o0o0o0
    #> 42     setosa_o0o0o0o0o0o0
    #> 43     setosa_o0o0o0o0o0o0
    #> 44     setosa_o0o0o0o0o0o0
    #> 45     setosa_o0o0o0o0o0o0
    #> 46     setosa_o0o0o0o0o0o0
    #> 47     setosa_o0o0o0o0o0o0
    #> 48     setosa_o0o0o0o0o0o0
    #> 49     setosa_o0o0o0o0o0o0
    #> 50     setosa_o0o0o0o0o0o0
    #> 51              versicolor
    #> 52              versicolor
    #> 53              versicolor
    #> 54              versicolor
    #> 55              versicolor
    #> 56              versicolor
    #> 57              versicolor
    #> 58              versicolor
    #> 59              versicolor
    #> 60              versicolor
    #> 61              versicolor
    #> 62              versicolor
    #> 63              versicolor
    #> 64              versicolor
    #> 65              versicolor
    #> 66              versicolor
    #> 67              versicolor
    #> 68              versicolor
    #> 69              versicolor
    #> 70              versicolor
    #> 71              versicolor
    #> 72              versicolor
    #> 73              versicolor
    #> 74              versicolor
    #> 75              versicolor
    #> 76              versicolor
    #> 77              versicolor
    #> 78              versicolor
    #> 79              versicolor
    #> 80              versicolor
    #> 81              versicolor
    #> 82              versicolor
    #> 83              versicolor
    #> 84              versicolor
    #> 85              versicolor
    #> 86              versicolor
    #> 87              versicolor
    #> 88              versicolor
    #> 89              versicolor
    #> 90              versicolor
    #> 91              versicolor
    #> 92              versicolor
    #> 93              versicolor
    #> 94              versicolor
    #> 95              versicolor
    #> 96              versicolor
    #> 97              versicolor
    #> 98              versicolor
    #> 99              versicolor
    #> 100             versicolor
    #> 101 virginica_o0o0o0o0o0o0
    #> 102 virginica_o0o0o0o0o0o0
    #> 103 virginica_o0o0o0o0o0o0
    #> 104 virginica_o0o0o0o0o0o0
    #> 105 virginica_o0o0o0o0o0o0
    #> 106 virginica_o0o0o0o0o0o0
    #> 107 virginica_o0o0o0o0o0o0
    #> 108 virginica_o0o0o0o0o0o0
    #> 109 virginica_o0o0o0o0o0o0
    #> 110 virginica_o0o0o0o0o0o0
    #> 111 virginica_o0o0o0o0o0o0
    #> 112 virginica_o0o0o0o0o0o0
    #> 113 virginica_o0o0o0o0o0o0
    #> 114 virginica_o0o0o0o0o0o0
    #> 115 virginica_o0o0o0o0o0o0
    #> 116 virginica_o0o0o0o0o0o0
    #> 117 virginica_o0o0o0o0o0o0
    #> 118 virginica_o0o0o0o0o0o0
    #> 119 virginica_o0o0o0o0o0o0
    #> 120 virginica_o0o0o0o0o0o0
    #> 121 virginica_o0o0o0o0o0o0
    #> 122 virginica_o0o0o0o0o0o0
    #> 123 virginica_o0o0o0o0o0o0
    #> 124 virginica_o0o0o0o0o0o0
    #> 125 virginica_o0o0o0o0o0o0
    #> 126 virginica_o0o0o0o0o0o0
    #> 127 virginica_o0o0o0o0o0o0
    #> 128 virginica_o0o0o0o0o0o0
    #> 129 virginica_o0o0o0o0o0o0
    #> 130 virginica_o0o0o0o0o0o0
    #> 131 virginica_o0o0o0o0o0o0
    #> 132 virginica_o0o0o0o0o0o0
    #> 133 virginica_o0o0o0o0o0o0
    #> 134 virginica_o0o0o0o0o0o0
    #> 135 virginica_o0o0o0o0o0o0
    #> 136 virginica_o0o0o0o0o0o0
    #> 137 virginica_o0o0o0o0o0o0
    #> 138 virginica_o0o0o0o0o0o0
    #> 139 virginica_o0o0o0o0o0o0
    #> 140 virginica_o0o0o0o0o0o0
    #> 141 virginica_o0o0o0o0o0o0
    #> 142 virginica_o0o0o0o0o0o0
    #> 143 virginica_o0o0o0o0o0o0
    #> 144 virginica_o0o0o0o0o0o0
    #> 145 virginica_o0o0o0o0o0o0
    #> 146 virginica_o0o0o0o0o0o0
    #> 147 virginica_o0o0o0o0o0o0
    #> 148 virginica_o0o0o0o0o0o0
    #> 149 virginica_o0o0o0o0o0o0
    #> 150 virginica_o0o0o0o0o0o0
    

    Created on 2018-09-20 by the reprex package (v0.2.1.9000)