Here is my problem: I have a table with isin and countries, like this:
ISIN COUNTRY
XX0001 ITALY
XX0002 FRANCE
XX0003 ITALY
XX0001 FRANCE
XX0002 ITALY
XX0004 FRANCE
I would like to create a new column with an indicator taking value 1 if the same name appears in both countries, 0 otherwise.
ISIN COUNTRY INDICATOR
XX0001 ITALY 1
XX0002 FRANCE 1
XX0003 ITALY 0
XX0001 FRANCE 1
XX0002 ITALY 1
XX0004 FRANCE 0
I am working in Tibco Spotfire that works also with native R language.
Data
df1 <- structure(list(ISIN = c("XX0001", "XX0002", "XX0003", "XX0001", "XX0002", "XX0004"),
COUNTRY = c("ITALY", "FRANCE", "ITALY", "FRANCE", "ITALY", "FRANCE")),
.Names = c("ISIN", "COUNTRY"), class = "data.frame",
row.names = c(NA, -6L))
We can try with duplicated
df1$INDICATOR <- as.integer(duplicated(df1$ISIN)|!duplicated(df1$COUNTRY))
df1$INDICATOR
#[1] 1 1 0 1 1 0
Or using data.table
library(data.table)
setDT(df1)[, INDICATOR := +(uniqueN(COUNTRY)>1) , ISIN]