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

时间:2016-02-18 23:22:02

标签: r dataframe unique

我有一个名为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

...

2 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:1)

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

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