从 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

您可以随时尝试使用 sqldf 包来解决此问题:

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

最新更新