【问题标题】:Wide to long format with multiple colums to one column宽到长格式,多列到一列
【发布时间】:2021-11-15 04:33:22
【问题描述】:
dataframe <- data.frame(
  x1 = c("apple", "orange", "banana", "strawberry"),
  y = c("a", "d", "b", "c"),
  z = c(4:1), x2 = c("avocado", "kiwi", "fig", "grape"), 
  x3 = c("lime", "apple", "banana", "kiwi"))

亲爱的,如何将此数据帧创建为长格式,其中所有 x1、x2 和 x3 合并如下:

y x
a apple
a avocado
a lime
b orange
b kiwi
b apple

【问题讨论】:

    标签: r dataframe format reshape


    【解决方案1】:
    library(tidyverse)
    
    dataframe |> 
      select(-z) |> 
      pivot_longer(-y) |> 
      select(-name)
    #> # A tibble: 12 × 2
    #>    y     value     
    #>    <chr> <chr>     
    #>  1 a     apple     
    #>  2 a     avocado   
    #>  3 a     lime      
    #>  4 d     orange    
    #>  5 d     kiwi      
    #>  6 d     apple     
    #>  7 b     banana    
    #>  8 b     fig       
    #>  9 b     banana    
    #> 10 c     strawberry
    #> 11 c     grape     
    #> 12 c     kiwi
    

    【讨论】:

      【解决方案2】:

      我不确定您示例中的 ys 是否正确对齐,但您可以通过快速旋转来做到这一点

      dataframe %>%
            pivot_longer(cols = contains("x"), values_to = 'x') %>%
            select(y, x)
      

      【讨论】:

      • 如何将其保存到另一个数据框?
      • 我做到了。 x% pivot_longer(cols = contains("x"), values_to = 'x') %>% select(y, x)
      • 是的 :) &lt;-=
      猜你喜欢
      • 2015-11-24
      • 2022-01-22
      • 1970-01-01
      • 2013-03-18
      • 1970-01-01
      • 2018-04-09
      • 2018-04-21
      • 1970-01-01
      • 2021-09-04
      相关资源
      最近更新 更多