R-由3个变量(行中2个)分组的重塑表格 [英] r- reshape table grouped by 3 variables (2 in rows)
本文介绍了R-由3个变量(行中2个)分组的重塑表格的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我需要重塑以宽格式显示下表:
> data
dia cli llam elegidos cumllam
1 1-11 a 1 1 1
2 2-11 a 2 1 3
3 1-11 b 2 1 2
4 2-11 b 1 1 3
5 2-11 c 1 0 1
我需要在行中输入天数,在列中输入累计天数,并将客户端数量作为值。
我写道:
library(reshape2)
my.f <- function (v) {if (length(v) == 0) 0 else length(v)}
series<-data.frame(dcast(data, dia~cumllam ,
fun.aggregate=my.f, value.var='cli'))
我得到:
> series
dia X1 X2 X3
1 1-11 1 1 0
2 2-11 1 0 2
但我需要将其按"elegidos"列分开。我的表格应该是:
elegidos dia X1 X2 X3
0 2-11 1 0 0
1 1-11 1 1 0
1 2-11 0 0 2
我已尝试:
data.frame(dcast(data, c(elegidos,dia)~cumllam ,
fun.aggregate=my.f, value.var='cli'))
但我得到了错误的结果:
c.elegidos..dia. X1 X2 X3
1 0 1 0 0
2 1 2 2 2
3 2 1 0 2
我可以首先筛选表,然后运行dcast,就像第一个代码和rind中那样,但我相信有一种方法可以一步到位。
推荐答案
如果您的目标是问题中倒数第二个矩阵,则只需使用:
df <- read.table(header=T, text = ' dia cli llam elegidos cumllam
1-11 a 1 1 1
2-11 a 2 1 3
1-11 b 2 1 2
2-11 b 1 1 3
2-11 c 1 0 1
')
require(reshape2)
dcast(df, formula=elegidos + dia ~ cumllam, length)
elegidos dia 1 2 3
1 0 2-11 1 0 0
2 1 1-11 1 1 0
3 1 2-11 0 0 2
这篇关于R-由3个变量(行中2个)分组的重塑表格的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文