首页 > 解决方案 > 检查名称(df)是否在其他字符列表中,返回真假值

问题描述

我有以下

structure(list(id = c(14, 15, 16, 17, 18), a = c(1, 2, 3, 5, 
6), b = c(3, NA, 2, 5, 7), c = c(1, 2, 3, 4, 5)), row.names = c(NA, 
-5L), class = "data.frame")

  id a  b c
1 14 1  3 1
2 15 2 NA 2
3 16 3  2 3
4 17 5  5 4
5 18 6  7 5

library(caret)
corr <- cor(na.omit(df))
highcorr <- findCorrelation(corr, cutoff = 0.9, names=TRUE)

highcorr
[1] "a"  "id"

我想获得一个新的数据框,如果 col 名称在 highcorr 中,则返回 true,否则返回 false。新数据框看起来像这样

  col   result
1 id    TRUE  
2 a     TRUE  
3 b     FALSE 
4 c     FALSE 

我觉得我想的太难了。我用 %in% 尝试了一些东西,但你只得到了 TRUE 值。任何建议将不胜感激:)!

标签: rdataframe

解决方案


您可以使用以下代码:

library(reshape2)
library(dplyr)
a<-melt(corr,value.name = "corr") 
a<-a[!duplicated(a$corr),]
a<- a %>% select(Var1, corr)%>% mutate(result = ifelse(corr > 0.9,T,F )) %>% select(Var1, result)

  Var1  result
1   id  TRUE
2    a  TRUE
3    b FALSE
4    b FALSE

推荐阅读