使用dcast重塑R中的数据

姆莫列耶

我有以下数据

library(reshape2)

d <- data_frame(
            Quart = c("Q1", "Q2", "Q3", "Q4", "Q4", "Q1","Q4","Q1", "Q2", "Q3"),
            var1 = c(1,0,1,1,1,0,2,3,0,1),
            var2= c(1,0,1,1,1,0,1,0,1,0),
            location= c("loc1", "loc1", "loc2", "loc2", "loc2", "loc2", "loc2",
                        "loc1", "loc2","loc1"))

我想重塑这些数据以创建一个表格,如下所示。

已加星标的单元格应为var1乘以loc1的数量,其中Quart = Q1。因此,在这种情况下,它将是“ 3”,因为没有行同时具有Q1和loc2,所以loc2将是“ 0”,loc3将是“ 1”,而loc4将是“ 0”。

在此处输入图片说明

我试图使用d cast重塑数据:

  d%>%
  reshape2::dcast(formula = Quart * var1 ~ location
              ,fun.aggregate = length       
translates to counts
              ,margins = c("Quart", "var1")
  ) -> d

但是,这并不能完全满足我的需求。有任何想法吗?

谢谢

MKR

一种选择是先用于tidyr::gather转换var1var2采用长格式,然后应用dcast为:

library(reshape2)
library(tidyverse)
gather(d, key, value, -Quart, -location) %>%
  dcast(Quart+key ~ location, fun.aggregate = sum, value.var = "value")

#   Quart  key loc1 loc2
# 1    Q1 var1    4    0
# 2    Q1 var2    1    0
# 3    Q2 var1    0    0
# 4    Q2 var2    0    1
# 5    Q3 var1    1    1
# 6    Q3 var2    0    1
# 7    Q4 var1    0    4
# 8    Q4 var2    0    3

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章