Фиктивный индикатор для повторений идентификатора по пересеченной местности

Вот моя проблема: у меня есть таблица с isin и странами, например:

ISIN          COUNTRY

XX0001        ITALY         
XX0002        FRANCE        
XX0003        ITALY         
XX0001        FRANCE        
XX0002        ITALY         
XX0004        FRANCE        

Я хотел бы создать новый столбец с индикатором, принимающим значение 1, если одно и то же имя появляется в обеих странах, иначе 0.

ISIN          COUNTRY       INDICATOR 

XX0001        ITALY         1
XX0002        FRANCE        1
XX0003        ITALY         0
XX0001        FRANCE        1
XX0002        ITALY         1
XX0004        FRANCE        0

Я работаю в Tibco Spotfire, который также работает с родным языком R.

Данные

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))

person willpar    schedule 11.05.2016    source источник


Ответы (1)


Мы можем попробовать с duplicated

df1$INDICATOR <- as.integer(duplicated(df1$ISIN)|!duplicated(df1$COUNTRY))
df1$INDICATOR
#[1] 1 1 0 1 1 0

Или с помощью data.table

library(data.table)
setDT(df1)[, INDICATOR := +(uniqueN(COUNTRY)>1) , ISIN]
person akrun    schedule 11.05.2016