我有一个数据表,如下
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 2008
和AUS 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