0

I want to assign 1 to the one that contains name and 0 to the missing one. I tried to use ifelse, but can not get it running. Thanks for your help.

Individual <- c("Jeff","NA","John","NA","NA")
Outcome: 1 0 1 0 0
0

2 Answers 2

1

You don't really need ifelse since you can convert logical values to integers. Use :

Individual <- c("Jeff","NA","John","NA","NA")
result <- as.integer(Individual != 'NA')
result
#[1] 1 0 1 0 0

However, if you have actual NA values and not string "NA" we can use is.na to check.

Individual <- c("Jeff",NA,"John",NA,NA)
result <- as.integer(!is.na(Individual))
result
#[1] 1 0 1 0 0
Sign up to request clarification or add additional context in comments.

Comments

0

It can also be done with ifelse:

Individual <- c("Jeff","NA","John","NA","NA")
ifelse(Individual == "NA", 0L, 1L)
#> [1] 1 0 1 0 0

Or as suggested by Ronak with NA:

Individual <- c("Jeff", NA, "John", NA, NA)
ifelse(is.na(Individual), 0L, 1L)
#> [1] 1 0 1 0 0

I consider the ifelse solution to be easier to read. On the other hand, Ronaks solution is a lot faster (i.e. by about a factor 10).

Created on 2021-02-07 by the reprex package (v1.0.0)

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.