如何过滤数据帧以删除其中没有列包含高于 X 或低于 Y 的值的行

问题描述 投票:0回答:1

使用R: 我正在尝试删除不包含任何大于 5 或小于 -5 的值的任何数据行,以便将它们从我的数据分析中排除。我找不到在过滤器命令中使用 OR 函数的方法,因此我决定创建两个新的数据帧(一个仅包含值大于 5 的行,另一个仅包含值低于 -5 的行) 。然后我将它们合并在一起。问题是有些行包含一个大于 5 的数字和另一个小于 -5 的数字,因此当我使用 bind_rows 时,数据会两次输入到新的过滤数据帧中。我要么仅在行名称唯一时才需要绑定行,要么找到一种方法来过滤数据而不创建两个单独的数据框。

这是我的代码:

Data <- read.table("C:/Users/Data.txt",sep="\t",header=TRUE, fill = TRUE)
row.names(Data) <- Data$gene

Data <- Data[, -1]

FilteredDataHigh = Data %>%
  filter(if_any(everything(), ~ . >= 5))

FilteredDataLow = Data %>%
  filter(if_any(everything(), ~ . <= -5))

FilteredData = bind_rows(FilteredDataHigh,FilteredDataLow)

enter image description here

r filter rbind bind-rows
1个回答
0
投票

我认为这应该给出您所需的结果:

FilteredData <- Data %>%
    filter(if_any(everything(), function(x) x <=-5 | x >=5))
© www.soinside.com 2019 - 2024. All rights reserved.