如何过滤DataFrame移除无列值>5或<-5的行?解决重复行问题
解决方案
方法一:单filter语句实现OR逻辑(推荐)
不用拆分两个DataFrame,直接在filter里用|(OR逻辑)把两个条件合并,一次筛选出符合要求的行,从根源避免重复:
Data <- read.table("C:/Users/Data.txt", sep="\t", header=TRUE, fill = TRUE) row.names(Data) <- Data$gene Data <- Data[, -1] # 直接筛选:至少一列≥5 或者 至少一列≤-5 FilteredData <- Data %>% filter(if_any(everything(), ~ . >= 5) | if_any(everything(), ~ . <= -5))
方法二:合并后去重
如果坚持用拆分合并的方式,只需要在bind_rows后加上distinct()即可去除重复行:
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) %>% distinct()
补充说明
两种方法都能实现需求,方法一更高效,因为只需要遍历数据一次;方法二更直观,适合理解逻辑后调整。
内容的提问来源于stack exchange,提问作者timnick23
相关产品推荐
相关产品推荐

