У меня следующий набор данныхCasting множественный value.var проконтролировано fun.aggregate
client_id <- c("A", "A", "B", "B", "B", "B", "B", "A", "A", "B", "B")
value <- c(10, 35, 20, 30, 50, 40, 30, 40, 30, 40, 10)
period_30 <- c(1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0)
period_60 <- c(1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0)
sign <- c("D", "D", "D", "D", "C", "C", "C", "D", "D", "D", "D")
data <- data.frame(client_id, value, period_30, period_60, sign)
можно использовать этот код, чтобы подсчитать количество различных расколов в данный период с кодом ниже:
library(data.table)
test<- dcast(setDT(data), client_id ~ paste0("period_30", sign), value.var = "period_30", sum)
Но я хотел бы также рассчитать значение в соответствии с различными расколами.
ожидаемый результат будет выглядеть следующим образом:
client_id av.value_period_30_sign_D av.value_period_60_sign_D av.value_period_30_sign_C av.value_period_30_sign_D
A 34.16667 NaN NaN NaN
B 30.00000 34.16667 NaN 27.50000
И тогда, она должна быть расширяемой дополнительных разделений, как среднее значение знака X, типа X в период 1.
Я не уверен, что с этим подходом можно добиться желаемого результата. Но я смотрел на аргумент fun.aggregate
. Возможно, он может использоваться в сочетании с несколькими value.var
аргументами?
Обновление: Код Джоэля отвечает на первую часть вопроса.
client_id sign period_30 period_60
A D 34.16667 34.16667
B D 30.00000 34.16667
B C NaN 27.50000
Но как перенести переменные и назначить имена в соответствии с разделителями автоматически?
Привет, Джоэл, я просто обновляю вопрос. Действительно, ваш код отвечает на первую часть проблемы. Вы хоть представляете, как я могу решить эту проблему? Это было бы очень полезно для меня. – Prometheus
@Prometheus, пожалуйста, проверьте изменения –
Спасибо, Джоэл! Его жизненная заставка :) – Prometheus