Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R-包含小计的透视表_R_Reshape2_Dcast - Fatal编程技术网

R-包含小计的透视表

R-包含小计的透视表,r,reshape2,dcast,R,Reshape2,Dcast,如何使用R中的小计(如MS Excel数据透视表)获取数据透视? 我正在使用dcastfromrestrape2包创建R轴。我还使用rowSums和colSums获得了总计。我承认我不理解dcast参数集中的复杂性。我只知道如何创建轴心和帮助文件是我的头如果有人可以使用dcast解决此问题(我怀疑它可以解决所有问题),并解释解决方案所需的参数,这将非常有帮助。 我使用这个代码(C2有两个因素,X1和X2): 样本预期枢轴(带小计t,t为总计) 假设您开始时没有任何总计,如下所示: mydf &l

如何使用R中的小计(如MS Excel数据透视表)获取数据透视?

我正在使用
dcast
from
restrape2
包创建R轴。我还使用
rowSums
colSums
获得了总计。我承认我不理解
dcast
参数集中的复杂性。我只知道如何创建轴心和帮助文件是我的头如果有人可以使用
dcast解决此问题(我怀疑它可以解决所有问题),并解释解决方案所需的参数,这将非常有帮助。

我使用这个代码(C2有两个因素,X1和X2):

样本预期枢轴(带小计t,t为总计)


假设您开始时没有任何总计,如下所示:

mydf <- structure(list(C1 = c("a", "a", "b", "b", "b"), X1 = c(12L, 14L, 
    16L, 11L, 8L), X2 = 1:5), .Names = c("C1", "X1", "X2"), row.names = c(NA, 
    5L), class = "data.frame")

mydf
##   C1 X1 X2
## 1  a 12  1
## 2  a 14  2
## 3  b 16  3
## 4  b 11  4
## 5  b  8  5
“边距”参数用于获取小计。在这里,我们根据“C1”(总计)和“ind”变量(小计)进行小计,并且我们还添加行总计(使用“变量”)


也就是说,我不确定我是否会推荐这种方法,因为您在同一个表中混合了数据和分析。

尝试
库(data.table);rbind(setDT(df1),df1[,lappy(.SD,sum),C1][,C1:=paste0(“t”,C1)])
非常感谢。我想
重塑2
边距
可能也会这样。我试试看。基本上,我正在尝试自动生成报告,这样我就不必每天都这样做。分析部分完成了,我被困在小计前面,因为这是一个很好的错误做法,当我立即向各个部门报告时(C1是部门名称)。@Arani,酷。刚刚意识到“重塑2”确实有
margins
参数,但它的工作方式有点不同。编辑了答案。最近我一直在使用
dcast.data.table
(它还没有实现
margins
),以至于我错误地说它没有转到“重塑2”。“grand_row”和“grand_col”对我不起作用,即使它们在文档中!然而,我只需要将“因子”列添加到“保证金”中,它就像黄油一样有效。@Arani,是的,我意识到了这一点,并更新了我的答案。很高兴它成功了!
C1 X1 X2 T
a  12 1  13
a  14 2  16
b  16 3  19
b  11 4  15
b  8  5  13
T  61 15 76
C1 X1 X2 T
a  12 1  13
a  14 2  16
ta 26 3  29
b  16 3  19
b  11 4  15
b  8  5  13
tb 35 12 47
T  61 15 76
mydf <- structure(list(C1 = c("a", "a", "b", "b", "b"), X1 = c(12L, 14L, 
    16L, 11L, 8L), X2 = 1:5), .Names = c("C1", "X1", "X2"), row.names = c(NA, 
    5L), class = "data.frame")

mydf
##   C1 X1 X2
## 1  a 12  1
## 2  a 14  2
## 3  b 16  3
## 4  b 11  4
## 5  b  8  5
library(reshape2)
mydfl <- melt(mydf)
mydfl$ind <- with(mydfl, ave(C1, C1, variable, FUN = seq_along))
dcast(mydfl, C1 + ind ~ variable, sum, 
      margins = c("C1", "ind", "variable"))
#      C1   ind X1 X2 (all)
# 1     a     1 12  1    13
# 2     a     2 14  2    16
# 3     a (all) 26  3    29
# 4     b     1 16  3    19
# 5     b     2 11  4    15
# 6     b     3  8  5    13
# 7     b (all) 35 12    47
# 8 (all) (all) 61 15    76