0

Say I have 2 data set one, data_a is my main data set and I want to create a new column in data_a call success based on data_b, I was thinking to use ifelse statement to match the data if it both appears in data_a and data_b then if return 1 if not 0/

Data set and code:

name <- c("A","B","c","D","E","A")
name_b <-c("A","B","c")


data_a <- data.frame(name)
data_b <- data.frame(name_b)

My code to try:

data_a$success<- ifelse(data_b$name_b == data_a$name, 1,0)

Desire Output from data_a

name success
A     1
B     1
C     1
D     0
E     0
A     1

Any idea to make it work? Thanks

OMG C
  • 97
  • 5

2 Answers2

0

You can use ifelse in combination with match:

data_a$success <- ifelse(is.na(match(data_a$name, data_b$name_b)), 0, 1)

Result:

data_a
  name success
1    A       1
2    B       1
3    c       1
4    D       0
5    E       0
6    A       1
Chris Ruehlemann
  • 20,321
  • 4
  • 12
  • 34
0

A tidyverse version:

library(tidyverse)

data_a <- data.frame(name = c("A","B","c","D","E","A"))
data_b <- data.frame(name_b = c("A","B","c"))

data_a %>% mutate(success = as.numeric(name %in% data_b$name_b))
#>   name success
#> 1    A       1
#> 2    B       1
#> 3    c       1
#> 4    D       0
#> 5    E       0
#> 6    A       1

Created on 2021-09-21 by the reprex package (v2.0.1)