pivot_longer()和pivot_wider()是否可传递?

时间:2019-09-17 15:24:06

标签: r tidyr

我想对虹膜数据集使用功能ivot_longer()和pivot_wider()。这是延长数据的代码:

iris_ds <- iris %>% pivot_longer(-Species, names_to = "Measure", values_to = "Value")

在文档中说,pivot_wider()是pivot_longer()的逆变换,所以我应用了代码:

iris_or <- iris_ds %>% pivot_wider(names_from = "Measure", values_from = "Value")

我得到下表:

    Species    Sepal.Length      Sepal.Width    Petal.Length    Petal.Width
    setosa     <dbl>             <dbl>          <dbl>           <dbl>
    versicolor <dbl>             <dbl>          <dbl>           <dbl>
    virginica  <dbl>             <dbl>          <dbl>           <dbl>

这在类似的collect()spread()问题(建议使用RowId)中得到了回答,我想要的帮助是,新函数ivot_longer和pivot_wider是否有办法管理它以使其可传递。预先感谢您的回答。

1 个答案:

答案 0 :(得分:2)

简短的回答是“否”,pivot_*中没有任何内容可以解决这个问题。将来在pivot_longer中添加一些内容以从内部生成唯一的rowID可能是一个好主意。

正如您所说,解决方法是使用tibble的{​​{1}}自己添加这样的行ID:

rowid_to_column

这将带您回到虹膜。