【问题标题】:Reshape large data set from long to wide [duplicate]从长到宽重塑大型数据集[重复]
【发布时间】:2019-04-14 16:50:31
【问题描述】:

我想将我拥有的大型数据集从长格式重塑为宽格式。目前我的数据集形成如下:

df <- structure(list(Politician = c("1", "2", "3", "k", "1", "2", "3", 
"k"), country = c("uk", "nl", "ro", "z", "uk", "nl", "ro", "z"
), variables = c(NA, NA, NA, NA, NA, NA, NA, NA), voteid = c(12, 
12, 12, 12, 13, 13, 13, 13), votedecision = c(1, 9, 9, 1, 3, 
2, 0, 9)), row.names = c(NA, -8L), class = c("tbl_df", "tbl", 
"data.frame"))

现在我想按如下方式重塑这个投票矩阵:

# A tibble: 3 x 8
  Politician counrty variables vote12 vote13 vote14 vote15 ...  
       <int> <chr>   <lgl>      <dbl>  <dbl>  <dbl>  <dbl> <chr>
1          1 uk      NA             1      3      1      9 ...  
2          2 nl      NA             9      2      2      0 ...  
3          3 ro      NA             9      0      1      2 ...  

数据集包含 8 个变量和超过 900 万个观测值。我对 Rstudio 很陌生,到目前为止,我刚刚尝试了一堆我在互联网上找到的代码。例如:

ep.new = cast(ep, mepid~voteid, value = "votedecision")

当我运行该订单时,它需要很长时间,然后我收到警告: 聚合需要 fun.aggregate:默认使用长度

是否有人对如何解决我的问题有任何提示或建议?

*还有几个变量包含有关特定政治家的信息。

【问题讨论】:

  • 请提供一个可重现的例子供我们测试或重现错误或预期结果。见:stackoverflow.com/help/mcve
  • 嘿 nsinghs,正如我所说,我是 Rstudio 的新手,就此而言,这个论坛也是如此。我真的不知道该怎么做。但是,我现在使用 reshape2 和以下命令预订了一些结果:ep.new = dcast(ep, mepid ~ voteid, value.var = "votedecision")。这现在以正确的宽格式重塑了数据集,但现在我缺少其他变量。
  • 您可以点击我在评论中提供的链接并了解如何发布一个好的问题和示例
  • @nsinghs,再次感谢,但我不允许共享原始数据,我不知道如何创建类似的数据作为示例。我使用的数据有 9456984 obs。 8 个变量。我使用以下命令:ep.newnew = dcast(ep, mepid + mep_name + mep_nationalparty ~ voteid, value.var = “votedecision”) 它有点工作,因为数据现在被重新整形为 843 obs。 7167 个变量,但它仍然提供以下消息:缺少聚合函数:默认为长度。消息是什么意思?
  • See here 提出一个人们可以帮助解决的 R 问题。您不必包含您的实际数据,但是如果没有可行的样本并且不需要人们从图片中输入数字,就很难在这些事情上提供帮助

标签: r reshape


【解决方案1】:

您可以使用 tidyr 包,特别是 spread,来重塑 tidy 数据:

library(tidyr)

spread(df, key = voteid, value = votedecision, sep = "")

# A tibble: 4 x 5
  Politician country variables voteid12 voteid13
  <chr>      <chr>   <lgl>        <dbl>    <dbl>
1 1          uk      NA               1        3
2 2          nl      NA               9        2
3 3          ro      NA               9        0
4 k          z       NA               1        9

【讨论】:

    猜你喜欢
    • 2018-06-15
    • 2015-11-05
    • 1970-01-01
    • 2012-12-01
    • 2018-05-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多