R 中有没有一种方法可以按两个顺序条件过滤数据帧?
Is there a way in R to filter a data frame by two sequential conditions?
我有一个表示 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", "mean", "mean", "entropy",
"entropy", "kurtosis"), Column = c("Event", "Event", "kurtosis",
"entropy", "Event", "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",]
我有一个表示 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", "mean", "mean", "entropy",
"entropy", "kurtosis"), Column = c("Event", "Event", "kurtosis",
"entropy", "Event", "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",]