【问题标题】:How to modify dataframe column?如何修改数据框列?
【发布时间】:2018-07-06 01:41:48
【问题描述】:

dataframe 列组件区域,x1 mean,x2 mean,x1 se,x2 se。

我想要更改折线图的数据框(ggplot)

最后,我制作了列区域、部分、均值、se。 (部分为新栏目)

如何使用代码?

#data.frame = temp 
region   x1   x2    y1    y2
A         1    2    0.1   0.2 
B         3    4    0.3   0.2     

#modified data.frame
region   part   mean   se 
A         x1      1     0.1
A         X2      2     0.2
B         X1      3     0.3
B         X2      4     0.2

请帮帮我..

【问题讨论】:

    标签: r dataframe data-conversion


    【解决方案1】:

    我们可以使用data.table 中的melt,它可以在measure 参数中将多个列从“宽”重塑为“长”

    library(data.table)
    melt(setDT(temp), measure = patterns("^x\\d+", "^y\\d+"),
       value.name = c('mean', 'se'), variable.name = 'part')[, 
             part := paste0("X", part)][order(region)]
    #   region part mean  se
    #1:      A   X1    1 0.1
    #2:      A   X2    2 0.2
    #3:      B   X1    3 0.3
    #4:      B   X2    4 0.2
    

    或者我们可以使用tidyverse,因为它对于ggplot的管道很有用

    library(ggplot2)
    gather(temp, key, val, x1:y2) %>% 
         separate(key, into = c('key1', 'part'), sep="(?<=[a-z])(?=[0-9])") %>% 
         spread(key1, val) %>% 
         rename_at(3:4, ~ c('mean', 'se')) %>%
         mutate(part = paste0("X", part))
    # region part mean  se
    #1      A   X1    1 0.1
    #2      A   X2    2 0.2
    #3      B   X1    3 0.3
    #4      B   X2    4 0.2
    

    【讨论】:

      【解决方案2】:

      使用基础 R:

      A = reshape(dat,t(matrix(2:5,2)),idvar = 1,dir="long",ids=dat$region)
      
      setNames(transform(A,time=paste0("X",time),row.names=NULL)[order(A$region),],
            c(names(dat)[1],"Part","mean","se"))
      
        region Part mean  se
      1      A   X1    1 0.1
      3      A   X2    2 0.2
      2      B   X1    3 0.3
      4      B   X2    4 0.2
      

      【讨论】:

        猜你喜欢
        • 2016-12-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-04-19
        相关资源
        最近更新 更多