根据其中一列中的值向数据框添加行 [英] Add rows to a data-frame based on values in one of the columns

查看:7
本文介绍了根据其中一列中的值向数据框添加行的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

当前数据框如下所示:

   Scenario Month            A            B            C
         1     1 -0.593186301  1.045550808 -0.593816304
         1     2  0.178626141  2.043084432  0.111370583
         1     3  1.205779717 -0.324083723 -1.397716949
         2     1  0.933615199  0.052647056 -0.656486153
         2     2  1.647291688 -1.065793671  0.799040546
         2     3  1.613663101 -1.955567231 -1.817457972
         3     1 -0.621991775  1.634069402 -1.404981646
         3     2 -1.899326887 -0.836322394 -1.826351541
         3     3  0.164235141 -1.160701812  1.238246459 

我想在Month=1的行上添加行,如下所示。我知道dplyr有一个ADD_ROWS函数,但我想根据条件添加行。我们非常感谢您的帮助。


    Scenario Month       A            B            C
      0                                             
      1     1 -0.593186301  1.045550808 -0.593816304
      1     2  0.178626141  2.043084432  0.111370583
      1     3  1.205779717 -0.324083723 -1.397716949
      0                                             
      2     1  0.933615199  0.052647056 -0.656486153
      2     2  1.647291688 -1.065793671  0.799040546
      2     3  1.613663101 -1.955567231 -1.817457972
      0                                             
      3     1 -0.621991775  1.634069402 -1.404981646
      3     2 -1.899326887 -0.836322394 -1.826351541
      3     3  0.164235141 -1.160701812  1.238246459

推荐答案

使用tidyverse的解决方案。

library(tidyverse)

dat2 <- dat %>%
  split(f = .$Scenario) %>%
  map_dfr(~bind_rows(tibble(Scenario = 0), .x))
dat2
# # A tibble: 12 x 5
#    Scenario Month       A        B       C
#       <dbl> <int>   <dbl>    <dbl>   <dbl>
#  1        0    NA  NA      NA       NA    
#  2        1     1  -0.593   1.05    -0.594
#  3        1     2   0.179   2.04     0.111
#  4        1     3   1.21   -0.324   -1.40 
#  5        0    NA  NA      NA       NA    
#  6        2     1   0.934   0.0526  -0.656
#  7        2     2   1.65   -1.07     0.799
#  8        2     3   1.61   -1.96    -1.82 
#  9        0    NA  NA      NA       NA    
# 10        3     1  -0.622   1.63    -1.40 
# 11        3     2  -1.90   -0.836   -1.83 
# 12        3     3   0.164  -1.16     1.24 

数据

dat <- read.table(text = "Scenario Month            A            B            C
         1     1 -0.593186301  1.045550808 -0.593816304
         1     2  0.178626141  2.043084432  0.111370583
         1     3  1.205779717 -0.324083723 -1.397716949
         2     1  0.933615199  0.052647056 -0.656486153
         2     2  1.647291688 -1.065793671  0.799040546
         2     3  1.613663101 -1.955567231 -1.817457972
         3     1 -0.621991775  1.634069402 -1.404981646
         3     2 -1.899326887 -0.836322394 -1.826351541
         3     3  0.164235141 -1.160701812  1.238246459 ",
                  header = TRUE)

这篇关于根据其中一列中的值向数据框添加行的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆