我试图在聚合中嵌套两个子集数据。但它返回不同长度的数据,因此无法计算。 我有什么选择?
newfile<- aggregate(cbind(subset(IVA,IVA$IVR.Agent =="Agent"),subset(IVA,IVA$IVR.Agent=="IVR")) ~ IVA$OrderNo, FUN = length, rm.action = TRUE)
以下是我收到的错误
Error in data.frame(..., check.names = FALSE) :
arguments imply differing number of rows: 25039, 4585
我正在尝试创建一个数据透视表,它将在单独的列中显示代理计数和IVR计数,就像在Excel中一样,如果对于特定的顺序没有IVR,则显示null,否则计数。
DataSet看起来像这样
OrderNo IVR/Agent
A1 IVR
B1 Agent
A2 Agent
B2 IVR
A3 Agent
B3 Agent
A4 Agent
B4 Agent
A5 IVR
B5 Agent
答案 0 :(得分:2)
如果您的数据被称为myData
,则以下内容似乎就是您所需要的。
table(myData)
# which yields
IVR.Agent
OrderNo Agent IVR
A1 0 1
A2 1 0
A3 1 0
A4 1 0
A5 0 1
B1 1 0
B2 0 1
B3 1 0
B4 1 0
B5 1 0
如果需要,只需将这些列添加到总计中。
gt <- rowSums( table(s) )
或
tab <- table(s)
gt <- tab[,1] + tab[,2]
答案 1 :(得分:1)
因此,您想查看reshape2
包和cast
功能。看看下面的代码:
# install.packages('reshape2') # only run if you haven't downloaded before
library(reshape2)
datCast <- dcast(dat, OrderNo ~ IVR.Agent, fun.aggregate = length, margins = T)
datCast
OrderNo Agent IVR (all)
1 A1 0 1 1
2 A2 1 0 1
3 A3 1 0 1
4 A4 1 0 1
5 A5 0 1 1
6 B1 1 0 1
7 B2 0 1 1
8 B3 1 0 1
9 B4 1 0 1
10 B5 1 0 1
11 (all) 7 3 10