У меня есть два фрейма данных с 3 столбцами каждый, и каждый фрейм данных состоит из разных типов данных (df1 имеет непрерывные данные с суффиксом имени столбца «con», df2 имеет категориальные данные с суффиксом имени столбца «cat»)
Мои данные:
df1 <- data.frame(t1_con=c(1:5), t2_con=c(6:10), t3_con=c(11:15))
df2 <- data.frame(t1_cat=letters[1:5], t2_cat=letters[6:10], t3_cat=letters[11:15]))
Я хотел бы получить все комбинации имен столбцов, то есть t1_con, t2_con, t3_cat. Я пробовал этот код:
df3 <- cbind(df1, df2)
results <- combn(names(df3),3,simplify=FALSE)
trait_combinations <- melt(results)
Это дает мне такие комбинации, как: t1_con, t2_con, t1_cat, у которого есть дубликат t1. Но мне не нужны дубликаты t1, t2 или t3. Например. группа 1 хороша, поскольку в группе есть t1, t2 и t3, но у группы 2 есть дубликат t1:
head(trait_combinations)
value L1
1 t1_con 1
2 t2_con 1
3 t3_con 1
4 t1_con 2
5 t2_con 2
6 t1_cat 2
Есть ли способ предотвратить появление дубликатов в combn или удалить дублированные строки постфактум? Я мог бы удалить суффиксы, но мне нужно знать, какие столбцы являются непрерывными и категориальными, для дальнейшего анализа.
Спасибо за вашу помощь.
unique
- person James Curran   schedule 02.04.2020trait_combinations2 <- trait_combinations trait_combinations2$value <- sub("_[^_]+$", "", trait_combinations2$value) ## keep first values trait_combinations2 <- unique(trait_combinations2) trait_combinations2 <- trait_combinations2 %>% group_by(L1) %>% filter(n() >= ncol(trait_temp2)) trait_combinations2 <- trait_combinations2[,-1] trait_combinations3 <- match_df(trait_combinations, trait_combinations2, on = NULL)
- person LHordley   schedule 02.04.2020> unique(c("t1_con", "t1_con", "t1_cat")) [1] "t1_con" "t1_cat"
- person James Curran   schedule 02.04.2020