首页 > 解决方案 > 如何重新排列数据框?

问题描述

我有一个如下所示的数据框(所有元素数字):

var1  var2  var3
1     1     10
1     3     30
1     2     20
2     6     30
2     4     20
2     2     10

我想以这种方式重新排列(var1 应该是不重复的行名,而 var2 应该是第一行):

   1   2   3   4   6
1  10  20  30  NA  NA
2  NA  10  NA  20  30

请注意,第 5 列被跳过,因为 var2 没有 '5' 值。我很难选择一种方法来处理这个问题。

你推荐我哪个 R 函数/包?使用 Linux 命令更容易获得它吗?

标签: rfunctiondataframe

解决方案


您可以dcastreshape2包中使用-

> reshape2::dcast(dt,var1~var2, value.var = "var3")

    var1  1  2  3  4  6
  1    1 10 20 30 NA NA
  2    2 NA 10 NA 20 30

注意- 如果您的数据很大,请dcast.data.tabledata.table包中使用。

> data.table::setDT(dt)
> dcast.data.table(dt,var1~var2,value.var = "var3")
   var1  1  2  3  4  6
1:    1 10 20 30 NA NA
2:    2 NA 10 NA 20 30

推荐阅读