r-计算两个组合列的唯一值



我有一个数据表,如下

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

最新更新