【问题标题】:How to reshape a dataframe for analysis by creating new variables based on row values [duplicate]如何通过基于行值创建新变量来重塑数据框以进行分析[重复]
【发布时间】:2021-12-11 20:31:57
【问题描述】:

有没有一种方法可以从olddf 获得newdf,方法是为列名创建一个新变量并为结果创建一个变量?谢谢。

olddf <- data.frame('A' = c('Z1','Z2','Z3'), 
                    'B' = c(100, 200, 500),
                    'C' = c(90, 50, 60),
                    'D' = c(NA, 50, NA))

newdf <- data.frame('A' = c('Z1','Z2','Z3','Z1','Z2','Z3'), 
                    'B' = c(100, 200, 500, 100, 200, 500),
                    'var' = c('C', 'C', 'C', 'D', 'D', 'D'),
                    'res' = c(90, 50, 60, NA, 50, NA))

【问题讨论】:

    标签: r dataframe reshape


    【解决方案1】:

    你也可以从tidyrpivot_longer

    library(tidyverse)
    pivot_longer(olddf, cols = c(C,D), names_to = "var", values_to = "res") %>%
      arrange(var)
    

    结果:

    # A tibble: 6 x 4
      A         B var     res
      <chr> <dbl> <chr> <dbl>
    1 Z1      100 C        90
    2 Z2      200 C        50
    3 Z3      500 C        60
    4 Z1      100 D        NA
    5 Z2      200 D        50
    6 Z3      500 D        NA
    

    【讨论】:

      【解决方案2】:
      library(reshape2)
      melt(olddf, id.vars = c('A','B'), value.name = 'res')
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-05-19
        • 1970-01-01
        • 1970-01-01
        • 2022-01-07
        • 2018-02-07
        • 2021-02-27
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多