我有一个 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 2008
和 {{ 1}},所以 4。
我尝试了 AUS 2012
和 df1[,uniqueN(.(iso, year))]
第一个给出了错误,第二个给出了答案 2,我正在寻找 4 种独特的组合。
我在这里做错了什么?
(因为我正在使用大型字符串数据集执行此操作,所以我不希望合并列,然后进行测试)。
答案 0 :(得分:2)
您可以使用 data.table
包按如下方式解决。
df1[, uniqueN(.SD), .SDcols=c("iso", "year")]
或
uniqueN(df1, by=c("iso", "year"))
答案 1 :(得分:2)
替代 data.table
方法,来自 count
的 dplyr
做得非常好:
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