计算两个组合列的唯一值
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
)
我想计算 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
我有一个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
和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