从数据表中删除具有特定字符串的行
Delete rows with specific string from a datable
我有一个数据 table 由 R 生成的 3 列和 1000 多行组成。前两列是字符串,最后的字符在某些列中相似(它们表示单元格类型)。我只想从不相似的行中过滤掉信息。
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
如有任何帮助,我们将不胜感激。
这应该有效
filter <- apply(Z,MARGIN = 1,function(x){
paste(x,collapse = "")
}) %>% duplicated
Z[filter,]
仅保留要比较的字符串部分并使用 !=
删除
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))
我有一个数据 table 由 R 生成的 3 列和 1000 多行组成。前两列是字符串,最后的字符在某些列中相似(它们表示单元格类型)。我只想从不相似的行中过滤掉信息。
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
如有任何帮助,我们将不胜感激。
这应该有效
filter <- apply(Z,MARGIN = 1,function(x){
paste(x,collapse = "")
}) %>% duplicated
Z[filter,]
仅保留要比较的字符串部分并使用 !=
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))