我需要完成2个可能同时处理得最好的任务。我需要转动一个简单的表,但在转动时我需要将其中一个列标准化,就像一个等级值。假设我们从按日期和事件的单位销售表开始。并非所有事件都同时发生。我们想要做的是比较事件发生时的单位销售情况,而不是事件发生的相对日期。在这个过程中,月份变得毫无意义。所以使用原始数据表,如:
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
我假设我可以将每个事件放入其自己的向量中,只需合并向量,但似乎应该有一个更清晰的方法来处理这些情况。
答案 0 :(得分: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
答案 1 :(得分: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)