从 R 中不同长度的唯一向量创建数据帧?

Create dataframe from unique vectors of differing lengths in R?

我有一个名为 tab 的 R 数据框,如下所示:

StoreID    Sales    ZIP    day
1          4900     55401  1/1/1993
1          3121     55401  1/2/1993
3          10021    90210  1/1/1993
3          50000    90210  1/2/1993
13         12000    12312  1/1/1993

...

唯一 StoreID 值的数量是 40,而唯一 ZIP 值的数量是 25。我基本上想要一个长度为 40 的数据帧,只有 StoreID 和邮政编码。

这基本上是我尝试过的:

ID_ZIP <- data.frame(unique(tab$StoreID))
for(i in unique(tab$StoreID)){
  dat <- tab[StoreID == i]
  append(unique(tab$Zip))
}

我有点卡住了。我习惯了 Python 中的键值迭代。merge 是正确的方法吗?

编辑: 结果集:

StoreID    ZIP
1          55401
3          90210
13         12312

...

unique() 函数适用于 data.frames。

我猜你就是这个意思吧?

tab<- read.table(text="StoreID    Sales    ZIP    day
1          4900     55401  1/1/1993
1          3121     55401  1/2/1993
3          10021    90210  1/1/1993
3          50000    90210  1/2/1993
13         12000    12312  1/1/1993", header=T)

unique(tab[,c(1,3)])

  StoreID   ZIP
1       1 55401
3       3 90210
5      13 12312

或更明确地说:

unique(tab[,c("StoreID","ZIP")])   

StoreID   ZIP
    1       1 55401
    3       3 90210
    5      13 12312

您总是可以尝试 SQL 通过使用 sqldf 包来解决这个问题:

sqldf("SELECT StoreID, ZIP FROM tab GROUP BY StoreID, ZIP)