Да, есть формула из пакета dplyr
с именем case_when
:
Я только что создал таблицу на основе вашего примера:
library(dplyr)
library(readr)
A <- read_table("Weight Days Chicken Diet Group NewDiet
42 0 1 1 G1 D1
51 2 1 1 G1 D1
59 4 1 1 G1 D4
64 6 1 1 G1 D1
76 8 1 1 G1 D3
93 10 1 1 G1 D1
106 12 1 1 G1 D1
125 14 1 1 G1 D1
149 16 1 1 G1 D1
171 18 1 1 G1 D2 ")
Если вы хотите создатьновый столбец в A
:
A$Cost_Diet <- case_when(A$NewDiet == "D1" ~ 2.2 * 10^(-5)/A$Weight,
A$NewDiet == "D2" ~ 2.8 * 10^(-5)/A$Weight,
A$NewDiet == "D3" ~ 3 * 10^(-5)/A$Weight,
A$NewDiet == "D4" ~ 3.2 * 10^(-5)/A$Weight)
Вывод:
> A
# A tibble: 10 x 7
Weight Days Chicken Diet Group NewDiet Cost_Diet
<dbl> <dbl> <dbl> <dbl> <chr> <chr> <dbl>
1 42 0 1 1 G1 D1 0.000000524
2 51 2 1 1 G1 D1 0.000000431
3 59 4 1 1 G1 D4 0.000000542
4 64 6 1 1 G1 D1 0.000000344
5 76 8 1 1 G1 D3 0.000000395
6 93 10 1 1 G1 D1 0.000000237
7 106 12 1 1 G1 D1 0.000000208
8 125 14 1 1 G1 D1 0.000000176
9 149 16 1 1 G1 D1 0.000000148
10 171 18 1 1 G1 D2 0.000000164
Или в отдельном векторе:
Cost_Diet <- case_when(A$NewDiet == "D1" ~ 2.2 * 10^(-5)/A$Weight,
A$NewDiet == "D2" ~ 2.8 * 10^(-5)/A$Weight,
A$NewDiet == "D3" ~ 3 * 10^(-5)/A$Weight,
A$NewDiet == "D4" ~ 3.2 * 10^(-5)/A$Weight)
Вывод:
> Cost_Diet
[1] 5.238095e-07 4.313725e-07 5.423729e-07 3.437500e-07 3.947368e-07 2.365591e-07 2.075472e-07 1.760000e-07
[9] 1.476510e-07 1.637427e-07