我正尝试创建一个大型的空data.frame并插入一组行。我在很多论坛上看到了一些类似的问题,但是我一直无法成功地应用它们中的任何一个来解决我所遇到的具体格式问题。将新行插入到数据框而不会丢失格式
我以rbind开头(df,allic)#allic是我想插入df#的数据框,但是,考虑到我的数据集的大小,操作需要5 1/2分钟才能完成。我知道在开始时创建数据框并替换行可以提高效率,但是我一直无法使它适用于我的问题。代码如下:
初始数据:
Order.ID Product
1 193505 Onion Rings
2 193505 Pineapple Cheddar Burger
3 193623 Fountain Soda
4 193623 French Fries
5 193623 Hamburger
6 193623 Hot Dog
7 193631 French Fries
8 193631 Hamburger
9 193631 Milkshake
产品将不会匹配下面,然而,这是一个格式问题我想它最好的证明给我带来了我现在是在格式化。
nb$Order.ID <- as.factor(nb$Order.ID)
plist <- aggregate(nb$Product,list(nb$Order.ID),list)
allp <- unique(unlist(plist$x))
allic <- expand.grid(plist$x[[1]], Var2=plist$x[[1]], Var3=1)
Var1 Var2 Var3
1 Onion Rings Onion Rings 1
2 Pineapple Cheddar Burger Onion Rings 1
3 Onion Rings Pineapple Cheddar Burger 1
4 Pineapple Cheddar Burger Pineapple Cheddar Burger 1
现在我创建一个使用一个空的数据帧(DF):
df <- data.frame(factor=rep(NA, rcnt), factor=rep(NA,rcnt), stringsAsFactors=FALSE)
RCNT是我打算修剪一次操作完成一个大的,任意数量。我的问题是当我尝试插入这些行使用:
df[1:4,] <- allic
head(df, n=10)
factor factor.1
1 47 47
2 51 47
3 47 51
4 51 51
5 NA NA
6 NA NA
7 NA NA
8 NA NA
我怎么能在一个数据帧中插入行,而不会失去我的价值观的格式?我非常感谢在这一点上我能得到的任何帮助。
编辑每下面的评论:
>df[i] <- for(i in 1:nrow(plist)) {
> allic <- expand.grid(plist$x[[i]], Var2=plist$x[[i]], Var3=1)
> df[i:nrow(allic),] <- sapply(allic, as.character)
我还是很新的与R,但是这时候我用DF <是工作 - rbind(DF,allic)。 nrow(DF)是4096
嗨@ LFoos24,这不是很清楚你所要完成的是什么,但我猜有可能是其他途径去解决它。 – 2013-03-02 05:20:58
@ Ricardo我相信你在这个说法中是正确的。再说一遍,我对这件事还是比较陌生的,并且一起劈砍我能做的工作。我试图完成的是循环所有的订单,以获得排列在一起的项目的所有组合,用1标记每个组合,并加起来组合以显示每个组合的计数。希望这在一定程度上有所帮助。 – LFoos24 2013-03-02 05:34:47
开辟一个新的问题可能会有所帮助,只是要解释所有组合在一起排列的项目,解释你尝试过的方法,并询问是否有更有效的方法去解决它。在这里有一些非常聪明的人,我肯定会愿意给一些有用的建议 – 2013-03-02 17:27:28