Я пытаюсь создать новые поля из df на основе соответствия условий. Ниже приведен df, который я пытаюсь использовать.
abc<- tibble::tribble(
~type, ~match_type, ~count,
"type b", "alpha", 2,
"type a", "alpha", 4,
"type b", "alpha", 1,
"type a", "alpha", 2,
"type a", "beta", 32,
"type a", "beta", 40,
"type a", "beta", 39,
"type a", "beta", 40,
"type a", "beta", 55,
"type b", "beta", 66,
"type b", "beta", 35,
"type b", "beta", 72,
"type b", "beta", 54,
"type b", "beta", 30,
"type b", "beta", 22,
"type b", "beta", 24,
"type b", "beta", 13,
"type b", "beta", 32,
"type b", "beta", 18,
"type b", "beta", 40
)
Теперь, если match_type
равно alpha
, создайте новое поле с именем альфа и суммируйте числа отсчетов там и аналогично для беты.
Это то, что я пробовал до сих пор, и ошибка, которую я получаю.
abc %>% mutate(alpha=(count[match_type =="alpha"]),
beta=(count[match_type =="beta"]))
Error: `mutate()` argument `alpha` must be recyclable.
ℹ `alpha` is `(count[match_type == "alpha"])`.
x `alpha` can't be recycled to size 20.
ℹ `alpha` must be size 20 or 1, not 4.
Я пытаюсь создать новый df, подобный этому (числа в этом примере могут не суммироваться)
result <- tibble::tribble(
~type, ~alpha, ~beta,
"type b", 22, 2,
"type a", 12, 4
)
Как только я получу это выше df, я хочу вставить эти значения в этот фрейм данных на основе поля type
, которое на данный момент равно na
.
final_df <-tibble::tribble(
~type, ~alpha, ~beta, val1 ,val2,
"type b", na, na, 4,5,
"type a", na, na,3,2,
"type c", 22, 2,2,3,
"type d", 12, 4,12,12,
"type e", 22, 2,4,5,
"type f", 12, 4,3,4
)
Я делаю слишком много шагов. Есть ли простой способ сделать это. Спасибо