从数据表中删除带有特定字符串的行。

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

我有一个数据表,由3列和1000多行组成,由R生成。前两列是字符串,最后的字符在一些列中是相似的(它们表示单元格类型)。我想只过滤掉非相似行的信息。

AAA.aa BBB.aa 0.9
AAA.aa BBB.bb 0.8
CCC.cc DDD.cc 0.7
CCC.cc BBB.bb 0.8

我希望我的输出为。

AAA.aa BBB.bb 0.8
CCC.cc BBB.bb 0.8

任何帮助将是非常感激的。

r string delete-row
1个回答
1
投票

只保留字符串的一部分,你想比较和删除使用 !=

subset(df, sub('.*\\.', '', V1) != sub('.*\\.', '', V2))

#      V1     V2  V3
#2 AAA.aa BBB.bb 0.8
#4 CCC.cc BBB.bb 0.8

这也可以用在 dplyr::filter

dplyr::filter(df, sub('.*\\.', '', V1) != sub('.*\\.', '', V2))

资料

df <- structure(list(V1 = c("AAA.aa", "AAA.aa", "CCC.cc", "CCC.cc"), 
V2 = c("BBB.aa", "BBB.bb", "DDD.cc", "BBB.bb"), V3 = c(0.9, 
0.8, 0.7, 0.8)), class = "data.frame", row.names = c(NA, -4L))

-1
投票

这应该可以

    filter <- apply(Z,MARGIN = 1,function(x){
                                             paste(x,collapse = "")
                                             }) %>% duplicated

    Z[filter,]
© www.soinside.com 2019 - 2024. All rights reserved.