【问题标题】:reshaping dataframe with strings in R用R中的字符串重塑数据框
【发布时间】:2017-12-12 18:18:24
【问题描述】:

我有这个数据框:

v1<-c("a", "cat1", "c", rep(1:5) )
v2<-c("b", "cat2", "c1", rep(6:10) )
v3<-c("c", "cat3", "c3", rep(11:15) )
v4<-c("a", "cat1", "c", rep(16:20) )
v5<-c("b", "cat2", "c1", rep(21:25) )
v6<-c("c", "cat3", "c3", rep(26:30) )

date<- c("some.chart", NA, NA, 2010:2014)

data.frame(date, v1,v2,v3,  v4,v5,v6)

它给出了以下混乱的数据:

 date   v1   v2   v3   v4   v5   v6
1 fgfh    a    b    c    a    b    c
2       <NA> cat1 cat2 cat3 cat1 cat2 cat3
3       <NA>    c   c1   c3    c   c1   c3
4       2010    1    6   11   16   21   26
5       2011    2    7   12   17   22   27
6       2012    3    8   13   18   23   28
7       2013    4    9   14   19   24   29
8       2014    5   10   15   20   25   30

你可以看到我的主要问题是它的第一行很乱。作为我希望看到的一个例子:

countries category1 category2 category3 year x1 x2
1        v1         a      cat1         c 2010  1  2
2        v2         b      cat2        c1 2010  6  7
3        v3         c      cat3        c3 2010 11 12
4        v4         a      cat1         c 2011 16 17
5        v5         b      cat2        c1 2011 21 22
6        v6         c      cat3        c3 2011 26 27

基本上,我想重塑它,但明显的实际问题是第一行是字符串。

有人可以帮我提供一些关于我能做什么的想法吗?

【问题讨论】:

    标签: r string reshape2


    【解决方案1】:

    我建议如下:

    df <- data.frame(date, v1,v2,v3,  v4,v5,v6)
    df <- t(df)
    colnames(df) <- df[1,]
    df <- df[-1,]
    colnames(df)[1] <- "cat2"
    colnames(df)[2] <- "cat3"
    df <- cbind(rownames(df), df)
    colnames(df)[1] <- "cat1"
    colnames(df)[4] <- "cat4"
    
    library(tidyr)
    gather(as.data.frame(df), key="year", value="x", "2010":"2014")
    

    【讨论】:

      猜你喜欢
      • 2012-09-22
      • 2014-03-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-11
      相关资源
      最近更新 更多