【发布时间】: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方法更简单