2016-05-11 4 views
1

Вот моя проблема: У меня есть таблица с ISIN и странами, как это:индикатора пустышки для беговых ID повторов

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

ответ

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] 
+1

дублированного кода, оно работает! Большое спасибо! – willpar