我目前正在尝试遍历整数和字符的数据框,并有条件地更改每一行的一个值。对于所有不符合条件的行,我只想将它们重新添加到填充有已修改行的新数据框中。
我以前这样做很顺利,但是我似乎已经凝视了太久而没有任何启发。
a<-data.frame(cbind(1,'a',2,'c',3,'d'), stringsAsFactors = F)
b<-data.frame(cbind(1,'a',2,'c',3,'g'), stringsAsFactors = F)
c<-data.frame(cbind(1,'f',4,'g',5,'h'), stringsAsFactors = F)
x<-rbind(a,b,c)
fun<-function(x){
fin<-NULL
for(i in 1:nrow(x)){
v<-x[i+1,]
if ((x[i,1]== v[i,1]) & (x[i,2]==v[i,2]) ){
x[i,3]<-"f"
fin<-rbind(fin, x[i,])
}else {fin<-rbind(fin, x[i,]) }
return(fin)
}
}
fun(x)
X1 X2 X3 X4 X5 X6
1 1 a f c 3 d
>
我想要的结果:
X1 X2 X3 X4 X5 X6
1 1 a f c 3 d
1 1 a 2 c 3 g
1 1 f 4 g 5 h
答案 0 :(得分:1)
或其他选择:
IA
答案 1 :(得分:0)
您自己的代码的新版本:
fun<-function(x){
fin<-NULL
for(i in 1:nrow(x)){
v<-x[ifelse((i+1)>nrow(x),i,i+1),]
if ((x[i,1]== v[1,1]) & (x[1,2]==v[1,2]) ){
x[i,3]<-"f"
fin<-rbind(fin, x[i,])
}else {fin<-rbind(fin, x[i,])}
}
return(fin)
}
fun(x)