本文介绍了如何在R中创建包含多个(3+)变量的数据透视表的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我在创建具有如下数据框的数据透视表时遇到问题:
c1 c2 c3 c4
E 5.76 201 A la vista
E 47530.71 201 A la vista
E 82.85 201 A la vista
L 11376.55 201 A la vista
E 6683.37 203 A la vista
E 66726.52 203 A la vista
E 2.39 203 A la vista
E 79066.07 202 Montoxv_a60d
E 14715.71 202 Montoxv_a60d
E 22661.78 202 Montoxv_a60d
L 81146.25 124 Montoxv_a90d
L 471730.2 124 Montoxv_a186d
E 667812.84 124 Montoxv_a186d
我的问题是,我不知道如何在R中创建具有四个变量的透视表或汇总表,考虑到行中的最后一个表,c1
和c3
的级别,以及c4
的级别作为列。对于行中考虑的每个级别,c2
变量的值必须按总和进行聚合。我想要这样的东西: A la vista Montoxv_a60d Montoxv_a186d Montoxv_a90d
E 201 47619.32 0 0 0
E 203 73412.28 0 0 0
E 202 0 116443.56 0 0
E 124 0 0 667812.84 0
L 201 11376.55 0 0 0
L 124 0 0 471730.2 81146.25
推荐答案
您可以使用reshape2
包中的dcast执行此操作:
dcast(mydata, c1 + c3 ~ c4, value.var="c2", fun.aggregate=sum)
例如:
library(reshape2)
# reproducible version of your data
mydata = read.csv(text="c1,c2,c3,c4
E,5.76,201,A la vista
E,47530.71,201,A la vista
E,82.85,201,A la vista
L,11376.55,201,A la vista
E,6683.37,203,A la vista
E,66726.52,203,A la vista
E,2.39,203,A la vista
E,79066.07,202,Montoxv_a60d
E,14715.71,202,Montoxv_a60d
E,22661.78,202,Montoxv_a60d
L,81146.25,124,Montoxv_a90d
L,471730.2,124,Montoxv_a186d
E,667812.84,124,Montoxv_a186d", header=TRUE)
result = dcast(mydata, c1 + c3 ~ c4, value.var="c2", fun.aggregate=sum)
生产:
c1 c3 A la vista Montoxv_a186d Montoxv_a60d Montoxv_a90d
1 E 124 0.00 667812.8 0.0 0.00
2 E 201 47619.32 0.0 0.0 0.00
3 E 202 0.00 0.0 116443.6 0.00
4 E 203 73412.28 0.0 0.0 0.00
5 L 124 0.00 471730.2 0.0 81146.25
6 L 201 11376.55 0.0 0.0 0.00
这篇关于如何在R中创建包含多个(3+)变量的数据透视表的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!