【问题标题】:Reshape data in R using dcast使用 dcast 重塑 R 中的数据
【发布时间】:2018-06-18 14:18:26
【问题描述】:

我有以下数据

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 乘以 Quart=Q1 的 loc1 的数量。所以在这种情况下,它将是“3”,loc2 将是“0”,因为没有任何行同时具有 Q1 和 loc2,loc3 将是“1”,而 loc4 将是“0”。

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

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

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

谢谢

【问题讨论】:

    标签: r dcast


    【解决方案1】:

    一种选择是首先使用tidyr::gathervar1var2 转换为长格式,然后将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
    

    【讨论】:

      猜你喜欢
      • 2023-04-06
      • 1970-01-01
      • 1970-01-01
      • 2017-06-28
      • 1970-01-01
      • 1970-01-01
      • 2013-10-04
      • 2022-08-05
      • 1970-01-01
      相关资源
      最近更新 更多