У меня есть фрейм данных в R с несколькими столбцами, которые вносят вклад в итоговый столбец, как показано ниже:
data <- data_frame(
Date = c("14/12/2018", "15/12/2018", "16/12/2018"),
Ent = c("C1", "C1", "C1"),
Ans = c(4, 9, 12),
Aban = c(1, 2, 1),
OOH = c(7, 5, 6),
Total = c(12, 16, 19),
)
Вывод ниже:
Date Ent Ans Aban OOH Total
<chr> <chr> <dbl> <dbl> <dbl> <dbl>
14/12/2018 C1 4 1 7 12
15/12/2018 C1 9 2 5 16
16/12/2018 C1 12 1 6 19
Что я хочучтобы сделать, это найти наиболее эффективный способ, которым я могу рассчитать процентный вклад каждого столбца в общую сумму.Ниже у меня есть мое текущее решение, которое требует трех отдельных строк кода:
#Ans
data$AnsP <- (data$Ans / data$Total) * 100
#Aban
data$AbanP <- (data$Aban / data$Total) * 100
#OOH
data$OOHP <- (data$OOH / data$Total) * 100
Однако, поскольку я ожидаю, что исходный набор данных будет расти, это в конечном итоге станет неоптимальным для нескольких переменных
Есть ли простой способ рассчитать эти процентные вклады в одной строке кода, возвращая эти проценты в виде столбцов в существующем фрейме данных?Может быть, с Саппи или функцией?Я сделал несколько грубых попыток, но они не сработали
Желание вывода в качестве кадра данных:
Date Ent Ans Aban OOH Total AnsP AbanP OOHP
<chr> <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
14/12/2018 C1 4 1 7 12 33.3 8.33 58.3
15/12/2018 C1 9 2 5 16 56.2 12.5 31.2
16/12/2018 C1 12 1 6 19 63.2 5.26 31.6
Любая помощь будет признательна в этом
С уважением, Том