微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决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",]

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。