我想知道是否有一种简单的方法来识别与另一个变量 100% 相关的特征/因子变量。因此,在示例中,该过程将匹配“颜色”和“车辆”以及“植物”和“高度”
color <- c('black', 'black', 'blue', 'blue', 'yellow')
vehicle <- c('truck', 'truck', 'car', 'car', 'bike')
plant <- c('tree', 'flower', 'grass', 'tree', 'flower')
height <- c('tall', 'medium', 'short', 'tall', 'medium')
df <- as.data.frame(cbind(color, vehicle, plant, height))
目前,我获取因素的级别数并运行相关矩阵并提取相关性为 1 的对(除了自身对)。
包比较工作原理:
library(tidyverse)
library(compare)
f <- function(x) factor(x, levels= unique(x))
f.df <- as.tibble(df) %>%
mutate_if(is.character, f) %>%
mutate_if(is.factor, as.numeric)
compare(f.df$color, f.df$vehicle)
compare(f.df$color, f.df$plant)
要测试相关性:
cor <- cor(f.df)
cor[lower.tri(cor)] <- 0
vars.corr <- data.frame(cor) %>%
mutate(var1= rownames(.)) %>%
select(var1, everything()) %>%
gather(var2, val, -var1) %>%
filter(var1!= var2) %>%
filter(val > .99)
但我正在努力使用 map (purrr) 应用比较函数来迭代变量对(vars.corr 中的 var1 和 var2),或者编写一个函数并正确应用 enquo 来从列表中读取变量并应用到 f.df。
但这现在看起来就像一个兔子洞,我想肯定有一个更简单的方法!
感谢您的任何建议!