首页 > 解决方案 > 计算两个组合列的唯一值

问题描述

我有一个 data.table 如下

library(data.table)
library(haven)
df1 <- fread(
    "A   B   C  iso   year   
     0   B   1  NLD   2009   
     1   A   2  NLD   2009   
     0   Y   3  AUS   2011   
     1   Q   4  AUS   2011   
     0   NA  7  NLD   2008   
     1   0   1  NLD   2008   
     0   1   3  AUS   2012",
  header = TRUE
)

我想计算iso, 和year( 这将是NLD 2009, AUS 2011, NLD 2008and AUS 2012, 所以 4 的组合的唯一值。

我试过df1[,uniqueN(.(iso, year))]df1[,uniqueN(c("iso", "year"))]

第一个给出错误,第二个给出答案 2,我正在寻找 4 个独特的组合。

我在这里做错了什么?

(因为我正在使用大型字符串数据集执行此操作,所以我不希望合并列,然后进行测试)。

标签: rdata.table

解决方案


data.table您可以使用包如下解决它。

df1[, uniqueN(.SD), .SDcols=c("iso", "year")]

或者

uniqueN(df1, by=c("iso", "year"))

推荐阅读