R 中有没有办法通过两个连续条件过滤数据帧? 数据

问题描述

我有一个表示 Pearson 相关性结果的数据框。这是结构示例:

Row     | Column | cor
Event   |Event   | 1
mean    |Event   | .82
mean    |kurtosis| .30
mean    |entropy | .85
entropy |Event   | .71
entropy |kurtois | .25
kurtosis|Event   | .69

我需要过滤相关性,因此如果两个特征之间的相关性大于 0.80(条件 1)阈值,则仅选择与“事件”关联最高的变量(条件 2)。 我希望最终产品看起来像这样:

Row     | Column | cor
mean    |Event   | .82

在上面的示例中,均值和熵在阈值以上相关,但是,“均值”与“事件”的相关性更高,因此这是最终输出。我使用的是生物数据,所以我有 100 多个特征,而手动操作太多了。

解决方法

我们可以做到

library(dplyr)
df1 %>%
     filter(Row  != Column,cor > 0.80,Column == 'Event')

-输出

#   Row Column  cor
#1 mean  Event 0.82

或使用 data.table

library(data.table)
setDT(df1)[Row!= column & cor > 0.8 & Column == 'Event']

数据

df1 <- structure(list(Row = c("Event","mean","entropy","kurtosis"),Column = c("Event","Event","kurtosis","kurtois","Event"),cor = c(1,0.82,0.3,0.85,0.71,0.25,0.69)),class = "data.frame",row.names = c(NA,-7L))
,

喜欢这个?所述条件并未涵盖所有基础,但这给出了此问题所需的结果

df[df$cor>.8 & df$Column=="Event" & df$Row!="Event",]