【问题标题】:How to re-arrange a data.frame如何重新排列 data.frame
【发布时间】:2016-05-11 16:03:13
【问题描述】:

我有兴趣在 R 中重新安排 data.frame。请耐心等待,我偶然发现了一个可重现的示例。

我有一个名义变量,它可以有两个值之一。目前,这个名义变量是一列。相反,我想有两列,代表这个名义变量可以有的两个值。这是一个示例数据框。 S 是标称变量,值为 T 和 C。

n <- c(1,1,2,2,3,3,4,4)
s <- c("t","c","t","c","t","c","t","c")
b <- c(11,23,6,5,12,16,41,3)
mydata <- data.frame(n, s, b)

我宁愿有一个看起来像这样的数据框

n.n <- c(1,2,3,4)
trt <- c(11,6,23,41)
cnt <- c(23,5,16,3)
new.data <- data.frame(n.n, trt, cnt)

我确信有一种方法可以使用mutatetidyr,但我不确定最佳路线是什么,而且我想重新排列的数据框很大。

【问题讨论】:

  • 看起来tidyr 可以用来做spread(mydata, s, b) 以获得你想要的东西。我错过了什么吗?

标签: r dataframe tidyr


【解决方案1】:

你想要spread:

library(dplyr)
library(tidyr)    
new.data <- mydata %>% spread(s,b)

  n  c  t
1 1 23 11
2 2  5  6
3 3 16 12
4 4  3 41

【讨论】:

    【解决方案2】:

    unstack(mydata, b~s)怎么样:

       c  t
    1 23 11
    2  5  6
    3 16 12
    4  3 41
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-25
      • 1970-01-01
      • 2017-12-19
      • 2012-09-02
      • 2020-04-08
      • 1970-01-01
      相关资源
      最近更新 更多