2013-03-01 73 views
1

我正嘗試創建一個大型的空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

+0

嗨@ LFoos24,這不是很清楚你所要完成的是什麼,但我猜有可能是其他途徑去解決它。 – 2013-03-02 05:20:58

+0

@ Ricardo我相信你在這個說法中是正確的。再說一遍,我對這件事還是比較陌生的,並且一起劈砍我能做的工作。我試圖完成的是循環所有的訂單,以獲得排列在一起的項目的所有組合,用1標記每個組合,並加起來組合以顯示每個組合的計數。希望這在一定程度上有所幫助。 – LFoos24 2013-03-02 05:34:47

+0

開闢一個新的問題可能會有所幫助,只是要解釋所有組合在一起排列的項目,解釋你嘗試過的方法,並詢問是否有更有效的方法去解決它。在這裏有一些非常聰明的人,我肯定會願意給一些有用的建議 – 2013-03-02 17:27:28

回答

1

嘗試在as.character包裝allic如下:

df[1:4,] <- sapply(allic, as.character) 


> df 
        factor     factor.1 
1    Onion Rings    Onion Rings 
2 Pineapple Cheddar Burger    Onion Rings 
3    Onion Rings Pineapple Cheddar Burger 
4 Pineapple Cheddar Burger Pineapple Cheddar Burger 
5      <NA>      <NA> 
6      <NA>      <NA> 
7      <NA>      <NA> 
8      <NA>      <NA> 
9      <NA>      <NA> 
10      <NA>      <NA> 
+0

完美的作品!謝謝。任何想法爲什麼當我將它代入我的循環(df < - rbind(df,allic)---- >> df [i:nrow(allic),] < - sapply(allic,as.character))錯誤「新列將在現有列之後留下空洞」? – LFoos24 2013-03-02 00:02:07

+0

我的價值是什麼? nrow(df)的價值是什麼? – 2013-03-02 01:20:07

+0

我添加了上面的編輯來回答你的問題。 – LFoos24 2013-03-02 01:45:36

相關問題