0 votes
1 view
in R Programming by (5.1k points)

I regularly need to change the values of a variable based on the values on a different variable, like this:

mtcars$mpg[mtcars$cyl == 4] <- NA

I tried doing this with dplyr but failed miserably:

mtcars %>%

mutate(mpg = mpg == NA[cyl == 4]) %>%

as.data.frame()

How could I do this with dplyr?

1 Answer

0 votes
by (23.2k points)

To change the values in “mpg” to NA that corresponds to the value of “cyl” as 4, you can use the replace function in as follows:

mtcars %>%

  mutate(mpg=replace(mpg, cyl==4, NA)) %>%

  as.data.frame()

Output:

    mpg cyl  disp  hp drat    wt  qsec vs am gear carb

1  21.0   6 160.0 110 3.90 2.620 16.46  0  1    4    4

2  21.0   6 160.0 110 3.90 2.875 17.02  0  1    4    4

3    NA   4 108.0  93 3.85 2.320 18.61  1  1    4    1

4  21.4   6 258.0 110 3.08 3.215 19.44  1  0    3    1

5  18.7   8 360.0 175 3.15 3.440 17.02  0  0    3    2

6  18.1   6 225.0 105 2.76 3.460 20.22  1  0    3    1

7  14.3   8 360.0 245 3.21 3.570 15.84  0  0    3    4

8    NA   4 146.7  62 3.69 3.190 20.00  1  0    4    2

9    NA   4 140.8  95 3.92 3.150 22.90  1  0    4    2

10 19.2   6 167.6 123 3.92 3.440 18.30  1  0    4    4

11 17.8   6 167.6 123 3.92 3.440 18.90  1  0    4    4

12 16.4   8 275.8 180 3.07 4.070 17.40  0  0    3    3

...