简体   繁体   中英

R Dataframe: How to multiply filtered values in a column based on the corresponding value in another column?

Given the sample dataset mtcars, I want to multiply all the values by (-1) in the column wt in the rows where the column cyl has the value 4. Here is a sketch of the head of mtcars: 在此处输入图片说明

How can this be done?

如果您只想使用基础 R,请尝试以下操作:

within(mtcars, wt <- ifelse(cyl == 4, -1, 1) * wt)

Base R:

mtcars[mtcars$cyl == 4, "wt"] <- mtcars[mtcars$cyl == 4, "wt"] * -1

Using data.table :

library(data.table)

dt_mtcars <- as.data.table(mtcars)
dt_mtcars[cyl == 4, wt := wt * -1]

returns:

     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: 22.8   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: 24.4   4 146.7  62 3.69 -3.190 20.00  1  0    4    2
 9: 22.8   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
13: 17.3   8 275.8 180 3.07  3.730 17.60  0  0    3    3
14: 15.2   8 275.8 180 3.07  3.780 18.00  0  0    3    3
15: 10.4   8 472.0 205 2.93  5.250 17.98  0  0    3    4
16: 10.4   8 460.0 215 3.00  5.424 17.82  0  0    3    4
17: 14.7   8 440.0 230 3.23  5.345 17.42  0  0    3    4
18: 32.4   4  78.7  66 4.08 -2.200 19.47  1  1    4    1
19: 30.4   4  75.7  52 4.93 -1.615 18.52  1  1    4    2
20: 33.9   4  71.1  65 4.22 -1.835 19.90  1  1    4    1
21: 21.5   4 120.1  97 3.70 -2.465 20.01  1  0    3    1
22: 15.5   8 318.0 150 2.76  3.520 16.87  0  0    3    2
23: 15.2   8 304.0 150 3.15  3.435 17.30  0  0    3    2
24: 13.3   8 350.0 245 3.73  3.840 15.41  0  0    3    4
25: 19.2   8 400.0 175 3.08  3.845 17.05  0  0    3    2
26: 27.3   4  79.0  66 4.08 -1.935 18.90  1  1    4    1
27: 26.0   4 120.3  91 4.43 -2.140 16.70  0  1    5    2
28: 30.4   4  95.1 113 3.77 -1.513 16.90  1  1    5    2
29: 15.8   8 351.0 264 4.22  3.170 14.50  0  1    5    4
30: 19.7   6 145.0 175 3.62  2.770 15.50  0  1    5    6
31: 15.0   8 301.0 335 3.54  3.570 14.60  0  1    5    8
32: 21.4   4 121.0 109 4.11 -2.780 18.60  1  1    4    2
     mpg cyl  disp  hp drat     wt  qsec vs am gear carb

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM