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