长格式R数据集中的公共变量

长格式R数据集中的公共变量,r,data.table,dataset,R,Data.table,Dataset,我有一个大约200000行的数据集,其结构类似于 library(data.table) dt <- data.frame(station = c(rep("A", 4), rep("B", 2), rep("C", 5), rep("D", 3)),

我有一个大约200000行的数据集,其结构类似于

library(data.table)
dt <- data.frame(station = c(rep("A", 4),
                        rep("B", 2),
                        rep("C", 5),
                        rep("D", 3)),
                 variable = c(letters[3:6],
                        letters[3:4],
                        letters[3:7],
                        letters[3:5]),
                 numbers = rnorm(14)) %>%
                   data.table
库(data.table)
dt%
数据表
我想将每个
站点重复的公共
变量
存储在一个新的向量中
。在本例中,结果应为
cd
,这是站点A到B的常用变量

数据集中实际变量的数量约为1000。如果能使用
data.table
语法,我将不胜感激。
谢谢。

按“变量”分组,获取行索引(
.I
),其中“站”的唯一元素数与整个数据集中“站”的唯一元素数相同,提取索引(
$V1
)并对行进行子集

unique(dt[dt[, .I[uniqueN(station) == uniqueN(dt$station)], variable]$V1]$variable)
#[1] "c" "d"

或者使用
Reduce
intersect

Reduce(intersect, split(dt$variable, dt$station))
#[1] "c" "d"