用于越野ID重复的虚拟指示器

时间:2016-05-11 13:18:00

标签: r tibco indicator

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

1 个答案:

答案 0 :(得分: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]