【问题标题】:How do I convert a data frame with multiple variables in rows from wide to long in R?如何在 R 中将行中包含多个变量的数据框从宽转换为长?
【发布时间】:2022-11-18 02:25:57
【问题描述】:

我有一个看起来像的数据框:

Amount          person1  person2  person3 

pocketmoney     0.5        1.3     1.7

chores          3          5        2

我如何把它变成这样的东西:


Person     Pocketmoney   chores

1             0.5         3

2             1.3         5

3             1.7         2


谢谢!

【问题讨论】:

    标签: r reshape


    【解决方案1】:

    我们可以使用data.table::transpose

    library(data.table)
    data.table::transpose(setDT(df1), make.names = "Amount",
        keep.names = 'Person')[, Person := seq_len(.N)][]
    

    -输出

        Person pocketmoney chores
        <int>       <num>  <num>
    1:      1         0.5      3
    2:      2         1.3      5
    3:      3         1.7      2
    

    数据

    df1 <- structure(list(Amount = c("pocketmoney", "chores"), person1 = c(0.5, 
    3), person2 = c(1.3, 5), person3 = c(1.7, 2)), 
    class = "data.frame", row.names = c(NA, 
    -2L))
    

    【讨论】:

      【解决方案2】:

      使用整理器:

      > df1 %>% 
          pivot_longer(-Amount) %>% 
          pivot_wider(names_from = Amount, values_from = value)
      # A tibble: 3 × 3
        name    pocketmoney chores
        <chr>         <dbl>  <dbl>
      1 person1         0.5      3
      2 person2         1.3      5
      3 person3         1.7      2
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-05-10
        • 2020-07-12
        • 1970-01-01
        • 2016-07-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多