r语言 - 比较两列的字符串和打印"TRUE"或"FALSE"



>我有一个 df 有两列,其中包含带有误报和误报调用的字符串。我想比较这两列并确定既是"FN"又是"FP"的列,并用"标签"制作第三列,指示这些列是否符合查询的规范。

例如,这是 df 的一部分

x1           x2
1/2:FN:am    .:.:.
1|1:FN:am    0/1:FP:am
.:.:.        1|0:559.511:FP

我希望结果输出是

x1           x2               x3
1/2:FN:am    .:.:.            False
1|1:FN:am    0/1:FP:am        True
.:.:.        1|0:559.511:FP   False 

谢谢!

这能满足你的需求吗?

df <- data.frame(x1=c("1:FN:AM","1.2:FN:AM","3"),x2=c("1:AM","1.2:FP:AM","3"),stringsAsFactors = FALSE)
         x1        x2
1   1:FN:AM      1:AM
2 1.2:FN:AM 1.2:FP:AM
3         3         3
df$x3 <- sapply(df$x1,grepl,pattern = "FN") & sapply(df$x2,grepl,pattern = "FP")
         x1        x2    x3
1   1:FN:AM      1:AM FALSE
2 1.2:FN:AM 1.2:FP:AM  TRUE
3         3         3 FALSE

这也可以(这捕获任何模式(x1 中的 FP 和 x2 中的 FN)或(x1 中的 FN 和 x2 中的 FP))

df <- read.table(text='x1           x2
                 1/2:FN:am    .:.:.
                 1|1:FN:am    0/1:FP:am
                 1|0:55:FP    0/2:FN:am
                 .:.:.        1|0:559.511:FP', header=TRUE, stringsAsFactors=FALSE)
df$x3 <- grepl('.*FN.*FP.*|.*FP.*FN.*', paste(df$x1, df$x2))
df
#         x1             x2    x3
#1 1/2:FN:am          .:.:. FALSE
#2 1|1:FN:am      0/1:FP:am  TRUE
#3 1|0:55:FP      0/2:FN:am  TRUE
#4     .:.:. 1|0:559.511:FP FALSE

相关内容

  • 没有找到相关文章

最新更新