我有一个像这样的数据框
v1 v2
1 a b,c
2 b d,a
3 c c,a
我想检查每行包含一个特定值的值,并使用循环和if else条件将其替换为另一个值。例如,在第二列的第一行中,意味着“b,c”不包含“a”第一列第一行的值,因此我们必须取“b,c”并将其替换为“a”在列v2中包含“a”的行中。因此,自第二个&第二列的第三行将在第一列中包含它们的值,因此我们必须跳过它们。最终结果将是
v1 v2
2 b d,b,c
3 c c,b,c
我写过这篇文章,但我无法达到我想要的最终结果:
df<-data.frame(v1=c("a","b","c"),v2=c("b,c","d,a","c,a"),stringsAsFactors=F)
df$v1 <- as.character(df$v1)
df$v2 <- as.character(df$v2)
df2<-data.frame()
for(i in 1:nrow(df)){
if(length(grep(df[i,1], df[i,2]))==0){
res<-sub(df[i,1],df[i,2], df[,2])
df2<-data.frame(x=df[,1],y=res, row.names=NULL)
}
else(grep(df[i,1], df[i,2])!=0)
next
print(df2)
}