繁体   English   中英

检查列是否包含r中另一列的一部分

[英]check if column contains part of another column in r

我有一个数据框,其中一列具有注册号,而另一列具有正确的注册号

a <- c("0c1234", "", "2468O")
b <- c("Oc1234", "Oc5678", "Oc9123")
df <- data.frame(a, b)

我希望更新第1行,因为它输入错误,第2行为空白,所以我想更新该字段。 第3行的编号不同,因此我希望保留该编号,但为此行输入一个新的条目(在另一个程序中,我只需要知道它需要插入即可)。

如何产生此数据框?

c <- c("update", "update", "insert")
df2 <- data.frame (a,b,c)

我尝试了grepl和str_detect,还考虑了grepl的正则表达式-例如,检查a列中的4数组合是否在b列中,但尚未成功

您可以执行以下操作:

df$c <- ifelse(a == '', 'update', 'insert')

您的输出将如下所示(问题中需要df2 ):

       a      b      c
1 0c1234 Oc1234 insert
2        Oc5678 update
3  2468O Oc9123 insert

当然,这仅在原始数据帧具有正确顺序的“事务”时才有效。

您可以通过以下方式执行此操作:

df <- data.frame(a,b,stringsAsFactors = F)

for (i in seq(1,nrow(df))){
    if (df$a[i] == '' || length(agrep(df$a[i],df$b[i])) > 0)
        df$c[i] <- 'update'
    else
        df$c[i] <- 'insert'
}

df

##       a      b      c
##1 0c1234 Oc1234 update
##2        Oc5678 update
##3  2468O Oc9123 insert

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM