簡體   English   中英

如何將數據從長格式重塑為寬格式以實現此輸出?

[英]How to reshape data from long to wide format so to achieve this output?

我在使用tidyr包重新排列以下數據框時tidyr

data <- data.frame(
    name = rep(c("John", "Mary", "Peter", "Sarah"), each=2),
    firm = c("a", "b", "c", "d", "a", "b", "c", "d"),
    rank = rep(1:2, 4),
    value = rnorm(8)
    )

我想重塑它,以便每個唯一的“名稱”變量都是一個行名,“值”作為該行的觀察值,“排名”作為列名,后跟“公司”名稱。 有點像這樣:

  name          1      firm_1            2       firm_2
  John       0.3407997      a        -0.3795377      b
  Mary      -0.8981073      c       -0.5013782       d
  Peter     0.3407997       a        -0.3795377      b
  Sarah     -0.8981073      c       -0.5013782       d

我們可以使用dplyrtidyr的組合,類似於@aosmith 評論中的帖子。

library(dplyr) # [1] ‘1.0.0’
library(tidyr) # [1] ‘1.1.0’

data %>% pivot_wider(names_from = rank, values_from = c(firm, value)) %>%
        select(name, `1` = value_1, firm_1, `2` = value_2, firm_2)

為了完全從長格式到寬格式,我們必須采用values_from而不是 1 列,而是 2 列,因為原始data有 4 列,而不是 3 列。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM