R 是否有一种方法可以使用变量的聚集函数创建面板数据集,而不为每个变量创建单独的数据集?

R 是否有一种方法可以使用变量的聚集函数创建面板数据集,而不为每个变量创建单独的数据集?,r,tidyr,R,Tidyr,我正在尝试创建一个跨年份的多变量面板数据集。我的数据在RStudio中的格式如下: 2012 2012 2012 2012 2013 2013 2013 ..... Name Var1 Var2 Var3......Var10 Var1 Var2...Var10..... X 1 4 20 ....... Y 2 7 25 ...... Z 3 9 26 ...... and so on for each va

我正在尝试创建一个跨年份的多变量面板数据集。我的数据在RStudio中的格式如下:

     2012 2012 2012      2012  2013 2013   2013 .....
Name Var1 Var2 Var3......Var10 Var1 Var2...Var10.....
X      1    4   20 .......
Y      2    7   25 ......
Z      3    9   26 ...... and so on for each variable across years
我想为这些对象创建一个面板数据集

Name  Year Var1 Var2 Var3....Var10
X     2012 
Y     2012 
Z     2012 
X     2013
Y     2013 
Z     2013
我已通过以下步骤创建了面板:

  • 合并了最上面的两行,使变量读作-2012.Var1、2012.Var2

  • 使用gather函数为每个变量创建单独的数据集,如下所示:

    Name  Year       Var1
    X    2012.Var1   1
    Y    2012.Var2   2
    X    2013.Var1 and so on
    
  • 然后,我将这些表组合成所需格式的一个数据帧

  • 对于步骤1:

    colnames(df) <- paste(colnames(df), df[1, ])
    

    虽然代码用于创建数据帧,但是,当变量数量很大且跨越数年时,它非常繁琐和耗时。我正在寻找一种更简单的方法来创建相同的数据帧?

    我没有使用
    聚集
    的解决方案,但您可以通过使用
    合并.stack
    函数从
    拆分StackShape
    包中一次性实现这一点

    我将添加一个简单的示例:

  • 创建一个示例数据集。在本例中,我创建的变量名以“”作为分隔符,年份显示在“”之后
    库(splitstackshape)
    种子集(123)
    
    dt1我没有使用
    gather
    的解决方案,但是您可以通过使用
    splitstackshape
    包中的
    merge.stack
    函数一次性实现这一点

    我将添加一个简单的示例:

  • 创建一个示例数据集。在本例中,我创建的变量名以“”作为分隔符,年份显示在“”之后
    库(splitstackshape)
    种子集(123)
    
    dt1见。仅链接的答案没有多大帮助,因为它们没有回答问题,只需指出可能的建议运行上述代码时出错-if中的错误(ncol(x)=1L){:参数长度为零请参见。仅链接的答案没有多大帮助,因为它们没有回答问题,只需指向可能的建议运行上述代码时出错-if中的错误(ncol(x)=1L){:参数的长度为零这看起来像是一个
    聚集
    /
    排列
    组合,但如果没有一个,很难准确地提供帮助这看起来像是一个
    聚集
    /
    排列
    组合,但是如果没有一个
    Var1 <- df %>% gather(year, Var1, `2012.Var1`,`2012.Var2`and so on) 
    Creating a Dataset for Var1
    - did the same for all the variables
    
    new_data = cbind(Var1,Var2, ..., Var10) # Combining Different Datasets
    names(new_data)