【问题标题】:Check whether names(df) is in other character list giving both true and false values back检查名称(df)是否在其他字符列表中,返回真值和假值
【发布时间】:2020-06-16 12:14:38
【问题描述】:

我有以下

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 值。任何建议将不胜感激:)!

【问题讨论】:

  • data.frame(col=names(df), result=names(df) %in% highcorr)

标签: r dataframe


【解决方案1】:

您可以使用以下代码:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-07-01
    • 1970-01-01
    • 2022-08-18
    • 1970-01-01
    • 1970-01-01
    • 2018-07-24
    • 1970-01-01
    • 2011-05-29
    相关资源
    最近更新 更多