【问题标题】:how to use melt and dcast on tough data frame如何在坚韧的数据帧上使用melt和dcast
【发布时间】:2015-11-06 20:12:34
【问题描述】:

我有一个数据框,每个单元格中都有一个值,但我的最后一列是一个列表。 例子。这里有3列。 X 和 Y 列的每一行都有一个值。但 Z 列实际上是一个列表。每个单元格中可以有多个值。

      X Y    Z
    1 a d  h, i, j
    2 b e  j, k
    3 c f  l, m, n, o

我需要创建这个:

  X Y    Z
 1 a d  h
 2 a d  i
 3 a d  j
 4 b e  j
 4 b e  k
 5 c f  l
 6 c f  m
 7 c f  n
 8 c f  o

有人可以帮我解决这个问题吗?我不确定如何为此使用 melt 或 dcast 或任何其他功能。

谢谢。

【问题讨论】:

  • 您只需要按组取消列出,例如library(data.table); setDT(df)[, .(Z = unlist(Z)), by = .(X, Y)]
  • 哇...像魅力一样工作。你能解释一下代码在做什么,以便我更好地理解它吗?
  • 我猜tidyr 方法更简单

标签: r reshape2 melt


【解决方案1】:

unnest 来自tidyr 工作

library(tidyr)
unnest(dat, Z)

【讨论】:

  • 哇...令人兴奋!我不敢相信我花了很多天来尝试编写循环和函数,而解决方案只有一行!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-28
  • 1970-01-01
  • 2015-05-13
相关资源
最近更新 更多