我想计算几个变量的平均值,但要限制和限制其值。
例如,在mtcars中,计算drat和wt变量的平均值,但限制大于3的任何值。因此,如果drat为3.90,则仅使用3作为平均值。
第一行将是(3+2.62)/2,而不是(3.9+2.62)/2。
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
这是无上限的。我怎么把它上限为3呢?有没有办法用rowMeans做呢?
mtcars = data.table(mtcars)
mtcars[,max_dart_wt := rowMeans(.SD), .SDcols = c("drat","wt")]
2条答案
按热度按时间euoag5mw1#
下面是smth快速和肮脏:
bejyjqdl2#
我意识到最快的方法是创建一个索引,如果列很少,则按“id”执行操作。