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