【发布时间】:2020-05-11 21:51:04
【问题描述】:
假设我有一个具有以下结构的数据框:
|id | segment1 | segment 2|
|----|----------|----------|
|1 | 1 | 0 |
|2 | 1 | 0 |
|3 | 0 | 1 |
|4 | 1 | 0 |
|5 | 0 | 1 |
我如何对数据进行透视,而不是拥有 2 个“segment”列,而只有 1 个显示“segment1”或“segment2”的列?我在考虑pivot_longer,但我认为我们实际上不再制作数据框了。似乎肯定有比使用 mutate 和 if_else 或创建新列并手动分配值更快的方法。
注意:这种转换不应产生更长的数据帧,因为我们只是折叠列
【问题讨论】:
-
是的,tidyr 包中的
pivot_longer函数是正确的函数。然后过滤掉值==0的行。 -
@Dave2e ,那么我将如何使用 pivot_longer 来执行此操作?我认为它本质上使数据框更长