【问题标题】:reshaping the data from wide to long [duplicate]将数据从宽变长[重复]
【发布时间】:2020-01-21 18:34:00
【问题描述】:

请帮我解决以下问题 我有一个需要重塑的宽数据框。
这是我的 df

mydf <- data.frame(date=1983:1985,January=c(5,7,8),February=c(12,18,19))  
mydf

这是我需要的输出

output <- data.frame(date=rep(c(1983,1984,1985),each=2),Month=rep(c("January","February"),3),Value=c(5,12,7,18,8,19))
output

【问题讨论】:

    标签: r reshape


    【解决方案1】:

    使用来自reshape2melt

    reshape2::melt(mydf, id.vars = "date", measure.vars = c("January", "February"), variable.name = "Month", value.name = "Value")
    
     #  date    Month Value
     #1 1983  January     5
     #2 1984  January     7
     #3 1985  January     8
     #4 1983 February    12
     #5 1984 February    18
     #6 1985 February    19
    

    【讨论】:

    • 感谢您的回复。我的问题解决了。再次感谢您的考虑。
    【解决方案2】:

    我们可以使用pivot_longer

    library(tidyr)
    library(dplyr)
    mydf %>%
        pivot_longer(cols = -date, names_to = 'Month', values_to = 'Value')
    #  date    Month Value
    #1 1983  January     5
    #2 1983 February    12
    #3 1984  January     7
    #4 1984 February    18
    #5 1985  January     8
    #6 1985 February    19
    

    【讨论】:

    • 它很方便。非常感谢兄弟。
    猜你喜欢
    • 1970-01-01
    • 2020-01-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-13
    • 2012-12-01
    • 2011-03-20
    相关资源
    最近更新 更多