У меня большая таблица ~ 8 миллионов строк. В этой таблице 15 столбцов с числовыми значениями, но только эти значения могут быть 0
, а другое числовое значение specific for that column
. Я хочу создать для каждого из этих столбцов два новых столбца на основе specific value
. Эти новые значения всегда характерны для столбцов.
Вот фиктивный пример того, как выглядят мои данные:
mydf1 <- data.frame(ID=1:5, c1n=c(0,1,0,0,1), c2n=c(2,0,2,0,0), c3n=c(0,0,0,3,3))
и вот мой желаемый вывод
> mydf2
ID c1n c1n_ctr c1n_cas c2n c2n_ctr c2n_cas c3n c3n_ctr c3n_cas
#1 1 0 0 0 2 25 55 0 0 0
#2 2 1 10 100 0 0 0 0 0 0
#3 3 0 0 0 2 25 55 0 0 0
#4 4 0 0 0 0 0 0 3 580 1002
#5 5 1 10 100 0 0 0 3 580 1002
Соответствие всегда одинаково, т. Е. Значение 1 в c1n
равно (10,100)
, значение 2 в c2n
равно (25,55)
, значение 3
в c3n
равно (580, 1002)
.
Я знаю, что могу использовать что-то вроде этого
mydf3 <- mutate(mydf1, c1n_ctr = ifelse(c1n == 1, 10, 0)) %>%
mutate(c1n_cas = ifelse(c1n ==1, 100, 0)) %>%
mutate(c2n_ctr = ifelse(c2n ==2, 25, 0)) %>%
mutate(c2n_cas = ifelse(c2n ==2, 55, 0)) %>%
mutate(c3n_ctr = ifelse(c3n ==3, 580, 0)) %>%
mutate(c3n_cas = ifelse(c3n ==3, 1002, 0))
Но мои реальные данные имеют 15 столбцов, и было бы много копий, есть ли какой-нибудь чистый способ сделать это?