跨国 ID 重复的虚拟指标

Dummy indicator for cross country ID repetitions

这是我的问题:我有一个 table 与 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))

我们可以试试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]