user5879741
user5879741

Reputation: 27

Replace column with another column

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

Answers (2)

Terru_theTerror
Terru_theTerror

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

R.Y
R.Y

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

Related Questions