У меня есть такой фрейм данных, и я хотел бы вставить новые строки в каждую строку таким образом, чтобы каждая строка была как бы дублирована исходной строке на основе правила математической комбинации появления переменных типа T'значения, и я также хотел бы избавиться от оригинальных строк.Таким образом, новые строки будут хранить значения столбцов не T-типа (ID, P1, P2), но будут изменять значения переменных T-типа, имеющих значения только в столбцах T1 и T2, столько раз, сколько требуется для комбинации, так что для 3(например, a, b, c) допустимые значения в одной строке переменных типа T, комбинация будет 3 (ab, ac, bc), но для 4 (например, a, b, c, d) это будет 6 (ab,ac, ad, bc, bd, cd) и т. д. Это означает вставку 3, 6 новых строк).
ID = c(1, 2, 3, 4, 5, 6, 7)
P1= c(10, 20, 30, NA, 19, 31, NA)
P2= c(8, NA,25,34,71,11,NA)
T1 = c("a", "a1", "e1", "d1", "a3", "f1", "f2")
T2 = c("b", "b1", "a1", "b2", "a4", "f1", "f3")
T3 = c("c", "c1", "c1", "d2", "k1", "a4", "f9")
T4 = c( NA, "d1", "f2", "b3", "c1", "b3", "f5")
T5 = c( NA, NA, NA, NA, "d6", "a4", "f6")
T6 = c( NA, NA, NA, NA, "f4", NA, "f7")
T7 = c(NA, NA, NA, NA, NA, NA, "c1")
T8 = c(NA, NA, NA, NA, NA, NA, "c8")
T9 = c(NA, NA, NA, NA, NA, NA, "f1")
T10= c(NA, NA, NA, NA, NA, NA, "k3")
df1 <- data.frame(ID, P1, P2, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10)
Вот так будет выглядеть первая пара строк моего нового набора данных (вычисленная из первых 2 строк исходного фрейма данных):
ID = c(1, 1, 1, 2, 2, 2, 2, 2, 2)
P1= c(10, 10, 10, 20, 20, 20, 20, 20, 20)
P2= c(8, 8,8,NA,NA,NA,NA, NA, NA)
T1 = c("a","a", "b", "a1", "a1", "a1", "b1", "b1", "c1")
T2 = c("b","c", "c", "b1", "c1", "d1", "c1", "d1", "d1")
T3 = c(NA, NA, NA, NA, NA, NA, NA, NA, NA)
T4 = c(NA, NA, NA, NA, NA, NA, NA, NA, NA)
T5 = c(NA, NA, NA, NA, NA, NA, NA, NA, NA)
T6 = c(NA, NA, NA, NA, NA, NA, NA, NA, NA)
T7 = c(NA, NA, NA, NA, NA, NA, NA, NA, NA)
T8 = c(NA, NA, NA, NA, NA, NA, NA, NA, NA)
T9 = c(NA, NA, NA, NA, NA, NA, NA, NA, NA)
T10= c(NA, NA, NA, NA, NA, NA, NA, NA, NA)
df2 <- data.frame(ID, P1, P2, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10)
Этомне кажется очень сложным, было бы проще вставить только одну строку, используя более простое правило.Мне только удалось выяснить, как рассчитать комбинации, формула которых: (n * (n-1)) / 2, где n - число допустимых значений типа T в строке.Любая помощь будет оценена, спасибо.