2015-02-06 27 views
0

我需要完成2個可能同時處理得最好的任務。我需要旋轉一個簡單的表,但在旋轉時,我需要將其中一個列標準化,就像排列值一樣。假設我們從日期和事件的單位銷售表開始。並非所有事件都發生在同一時間。我們想要做的是比較事件的單位銷售,而不是日期,但是事件發生的相對日期。在這個過程中,這個月變得毫無意義。因此,與原始數據表所示:如何同時調整表格和分配事件對齊ID

dfr <- data.frame(
    Event = c("A","B","A","C","A","B","C"), 
    Month = c("Jan","Jan","Feb","Feb","Mar","Mar","Mar"), 
    Units = c(5,10,10,15,12,8,18) 
) 

我需要一個產生轉動表所示:

Row | A | B | C 

1 | 5 | 10 | 15 

2 | 10 | 8 | 18 

3 | 12 | na | na 

我想我可以把每個事件到自己的向量剛剛合併的載體,但它似乎像應該有一個更清晰的方式來處理NA情況。

+0

是不是一個數據透視表的東西excel組成?你已經把它發佈在堆棧溢出的r部分。沒有r代碼或試圖進一步證明我的觀點 – rawr 2015-02-06 15:52:44

回答

0

嘗試

df$indx <- with(df, ave(seq_along(Event), Event, FUN=seq_along)) 
library(reshape2) 
dcast(df, indx~Event, value.var='Units') 
# indx A B C 
#1 1 5 10 15 
#2 2 10 8 18 
#3 3 12 NA NA 

或者

xtabs(Units~indx+Event, df) 
1

這裏的製表部分與tidyr。需要NA處理。

library(tidyr) 

dfr <- data.frame(
    Event = c("A","B","A","C","A","B","C"), 
    Month = c("Jan","Jan","Feb","Feb","Mar","Mar","Mar"), 
    Units = c(5,10,10,15,12,8,18) 
) 

pivot <- spread(dfr[,-2],Event,Units) 
pivot