我有一个数据框,在一列中有注册号,在另一列中有正确的注册号
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中但是尚未成功
答案 0 :(得分:0)
您可以这样做:
df$c <- ifelse(a == '', 'update', 'insert')
您的输出如下(问题中需要df2
):
a b c
1 0c1234 Oc1234 insert
2 Oc5678 update
3 2468O Oc9123 insert
当然,如果您的原始数据框具有&#39;交易&#39;按顺序排列。
答案 1 :(得分:0)
您可以这样做:
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