【问题标题】:Intercalate columns in R在 R 中插入列
【发布时间】:2013-03-14 15:16:30
【问题描述】:

我有以下data frame

   Date        CCL     Rie
   2002-01-01  68.6879472  MB
   2002-02-01  38.1691072  MB
   2002-03-01  53.2893517  MB
   2002-04-01  16.9071572  MA
   2002-05-01   8.9496654   A
   2002-06-01  37.1852996  MB
   2002-07-01  39.0751017  MB
   2002-08-01  16.4683628  MA
   2002-09-01  18.9381392  MA
   2002-10-01  18.7873039  MA
   2002-11-01  39.9079079  MB

而且我还没有找到获取下一个输出的代码或包:

  Date            New Column
2002-01-01          68.6879472
2002-01-01             MB
2002-02-01          38.1691072
2002-02-01             MB
2002-03-01         53.2893517
2002-03-01            MB
2002-04-01          16.9071572 
2002-04-01             MA

等等……

即,对于相同的date,创建一个新列,抛出CCLRie 插入的值

【问题讨论】:

    标签: r merge dataframe


    【解决方案1】:

    或者使用基地的reshape:

    tt <- reshape(data = df, idvar="Date", varying = c("CCL", "Rie"), 
           direction="long", v.names=c("values"))[c("Date", "values")]
    > tt[order(tt$Date), ]
    #                    Date     values
    # 2002-01-01.1 2002-01-01 68.6879472
    # 2002-01-01.2 2002-01-01         MB
    # 2002-02-01.1 2002-02-01 38.1691072
    # 2002-02-01.2 2002-02-01         MB
    # 2002-03-01.1 2002-03-01 53.2893517
    # 2002-03-01.2 2002-03-01         MB
    # 2002-04-01.1 2002-04-01 16.9071572
    # 2002-04-01.2 2002-04-01         MA
    # 2002-05-01.1 2002-05-01  8.9496654
    # 2002-05-01.2 2002-05-01          A
    # 2002-06-01.1 2002-06-01 37.1852996
    # 2002-06-01.2 2002-06-01         MB
    # 2002-07-01.1 2002-07-01 39.0751017
    # 2002-07-01.2 2002-07-01         MB
    # 2002-08-01.1 2002-08-01 16.4683628
    # 2002-08-01.2 2002-08-01         MA
    # 2002-09-01.1 2002-09-01 18.9381392
    # 2002-09-01.2 2002-09-01         MA
    # 2002-10-01.1 2002-10-01 18.7873039
    # 2002-10-01.2 2002-10-01         MA
    # 2002-11-01.1 2002-11-01 39.9079079
    # 2002-11-01.2 2002-11-01         MB
    

    【讨论】:

    • 我试过了,但问题是我需要问题格式的数据输出。 CCL 和 Rie 值插入:一个 CCL 值,然后一个 Rie 值……一个 CCL 值,然后一个 Rie 值……等等!无论如何谢谢
    • @TomásAyala,您认为这里的价值观如何......?
    • 对不起,我看到的输出不一样!诡异的!非常感谢!
    【解决方案2】:

    您可以使用reshape2 包中的melt 函数来实现:

    d <- melt(d, id.vars="Date")
    d[order(d$Date),-which(colnames(d)=="variable")]
    

    这给出了:

             Date      value
    1  2002-01-01 68.6879472
    12 2002-01-01         MB
    2  2002-02-01 38.1691072
    13 2002-02-01         MB
    3  2002-03-01 53.2893517
    14 2002-03-01         MB
    4  2002-04-01 16.9071572
    15 2002-04-01         MA
    5  2002-05-01  8.9496654
    16 2002-05-01          A
    6  2002-06-01 37.1852996
    17 2002-06-01         MB
    7  2002-07-01 39.0751017
    18 2002-07-01         MB
    8  2002-08-01 16.4683628
    19 2002-08-01         MA
    9  2002-09-01 18.9381392
    20 2002-09-01         MA
    10 2002-10-01 18.7873039
    21 2002-10-01         MA
    11 2002-11-01 39.9079079
    22 2002-11-01         MB
    

    【讨论】:

    • 我试过了,但问题是我需要问题格式的数据输出。 CCL 和 Rie 值插入:一个 CCL 值,然后一个 Rie 值……一个 CCL 值,然后一个 Rie 值……等等!无论如何谢谢
    • 我觉得我的答案输出和你描述的一样?
    • 对不起,我看到的输出不一样!诡异的!非常感谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-09
    • 2011-07-25
    相关资源
    最近更新 更多