我正在尝试使用data.table按组显示重复项。 更具体地说,我想找出在给定年份内一个国家是否有多个观测值。 这是一个样本数据集:
# load data.table package, assuming it's installed
library(data.table)
# create dataset
year <- rep(2010:2012, 3)
country <- c(rep("A", 3), rep("B", 3), rep("C", 3))
value <- sample(2:200, 9, replace = TRUE)
df <- cbind(year, country, value)
df <- rbind(df, c(2012, "C", 20))
df # show data
# put data frame in data.table format and set year as key
dt <- data.table(df)
setkey(dt, year)
请注意,对于2012年,国家“C”有两个观测值,而所有其他国家的观测值按年份唯一。
我原以为以下代码将为我提供重复的国家和年份名称:
dt[duplicated(country), country, by = year]
相反,它显示了从2011年起的所有数据,这意味着重复的函数被应用于整个数据表而不是按年份。如果我想使用data.table提取2012年国家“C”的单个重复值,该怎么做?
library(dplyr)
),您可以执行dt %>% count(country, year) %>% filter(n > 1)
或dt %>% select(country, year) %>% filter(duplicated(.))
。 - talatdt[, .SD[duplicated(country)], by = year]
。 - eddi