Reputation: 27
I would like to replace the value of column Name.x with value from Name.y with condition if it is not NA (empty rows)
Name.x Name.y
US NA
Germany NA
Germany France
Canada NA
Italy Morocco
Austria Belgium
Result:
Name.x
US
Germany
France
Canada
Morocco
Belgium
Upvotes: 0
Views: 2382
Reputation: 5017
Try something like this:
Your data.frame
db1<-data.frame(Name.x=c("US","Germany"),
Name.y=c(NA,"France"))
db1
Name.x Name.y
US <NA>
Germany France
Columns names to analyze/substitute
coldb1_NA<-"Name.y"
coldb_toSub<-"Name.x"
Substitution
db2<-db1
db2[,coldb_toSub]<-as.character(db1[,coldb_toSub])
db2[!is.na(db1[,coldb1_NA]),coldb_toSub]<-as.character(db1[!is.na(db1[,coldb1_NA]),coldb1_NA])
Your output
db2
Name.x Name.y
1 US <NA>
2 France France
Upvotes: 0
Reputation: 11
Example data:
a <- data.frame("Name.x" = c("US", "Germany","Germany", "Canada", "Italy", "Austria"), "Name.y" = c(NA, NA, "France", NA, "Morocco", "Belgium"))
Solution:
a$Name.x <- ifelse(is.na(a$Name.y), as.character(a$Name.x), as.character(a$Name.y))
Upvotes: 1