计算两个组合列的唯一值

Counting the unique values of two combined columns

我有一个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
)

我想计算 isoyear 组合的唯一值(即 NLD 2009AUS 2011NLD 2008AUS 2012,所以 4.

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

第一个给出错误,第二个给出答案2,这里我要找4个唯一的组合。

我做错了什么?

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

你可以使用data.table包解决它。

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

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

替代 data.table 方法,dplyr 中的 count 做得非常好:

library(dplyr)
df1 %>% count(iso, year)

输出:

   iso year n
1: AUS 2011 2
2: AUS 2012 1
3: NLD 2008 2
4: NLD 2009 2