У меня есть фрейм данных с именем «dat» с 5 числовыми переменными (var1, var2, var3, var4, var5), каждая с 20 наблюдениями.
structure(list(var_1 = c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12,
13, 14, 15, 16, 17, 18, 19, 20), var_2 = c(7, 8, 9, 10, 11, 12,
13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26), var_3 = c(4,
5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21,
22, 23), var_4 = c(2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
15, 16, 17, 18, 19, 20, 21)), row.names = c(NA, -20L), class = c("tbl_df",
"tbl", "data.frame"))
Я использую этот код для создания и сохранения в новом фрейме данных (названном «объединенным») всех возможных пар комбинаций 5 переменных со средним значением 2 переменных, которые объединены вместе:
combined <- combn(dat, 2, FUN = rowMeans)
Вот результат:
structure(c(4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,
18, 19, 20, 21, 22, 23, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5, 8.5, 9.5,
10.5, 11.5, 12.5, 13.5, 14.5, 15.5, 16.5, 17.5, 18.5, 19.5, 20.5,
21.5, 1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5, 8.5, 9.5, 10.5, 11.5,
12.5, 13.5, 14.5, 15.5, 16.5, 17.5, 18.5, 19.5, 20.5, 5.5, 6.5,
7.5, 8.5, 9.5, 10.5, 11.5, 12.5, 13.5, 14.5, 15.5, 16.5, 17.5,
18.5, 19.5, 20.5, 21.5, 22.5, 23.5, 24.5, 4.5, 5.5, 6.5, 7.5,
8.5, 9.5, 10.5, 11.5, 12.5, 13.5, 14.5, 15.5, 16.5, 17.5, 18.5,
19.5, 20.5, 21.5, 22.5, 23.5, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12,
13, 14, 15, 16, 17, 18, 19, 20, 21, 22), .Dim = c(20L, 6L))
1) Код работает нормально, но проблема в том, что новые сгенерированные переменные в «объединенном» фрейме данных называются V1, V2, V3, V4…. и я не могу понять каждую новую переменную, от которой происходит комбинация переменных. Я бы предпочел, чтобы новые сгенерированные переменные назывались «var1var2», «var1var3» и так далее… Есть ли способ получить это?
2) Кроме того, есть ли способ применить функцию combn только к некоторым столбцам, а не ко всем переменным, которые присутствуют в кадре данных «dat»?
3) Как я могу добавить новые сгенерированные переменные в исходный фрейм данных «dat», а не сохранять их в новом?
Спасибо большое за вашу помощь!
combn
здесь: я предполагаю, что вы хотите сгруппировать по одним переменным и суммировать другие, верно? - person r2evans   schedule 19.11.2019cbind(dat1, ...)
должен работать, где...
- это результаты ваших усилий поcombn
-и-переименовать. - person r2evans   schedule 20.11.2019