首页 > 解决方案 > 添加有条件的行

问题描述

这是我的数据框:

                    time power    hr    fr          id
                   <chr> <chr> <chr> <chr>       <chr>
 1                  t-ph  Load    HR    BF LM01-PRD-S1
 2 1.0416666666666666E-2    25    90    24 LM01-PRD-S1
 3 1.9444444444444445E-2    25    92    23 LM01-PRD-S1
 4 3.0555555555555555E-2    25    93    22 LM01-PRD-S1
 5 4.1666666666666664E-2    25    93    20 LM01-PRD-S1
 6 5.2083333333333336E-2    40    96    20 LM01-PRD-S1
 7 6.1805555555555558E-2    40    98    21 LM01-PRD-S1
 8 7.2222222222222229E-2    40   100    21 LM01-PRD-S1
 9 8.2638888888888887E-2    40   100    20 LM01-PRD-S1
10              9.375E-2    55   105    22 LM01-PRD-S1
11  0.10416666666666667     55   105    20 LM01-PRD-S1
12  0.11319444444444444     55   109    19 LM01-PRD-S1
13  0.12291666666666667     55   112    21 LM01-PRD-S1
14  t-ph                  Load    HR    BF LB02-PRD-S1
15  1.0416666666666666E-2   35   102    16 LB02-PRD-S1
16  1.9444444444444445E-2   35   101    17 LB02-PRD-S1
17  3.0555555555555555E-2   35   105    15 LB02-PRD-S1
18  4.0972222222222222E-2   35    96    16 LB02-PRD-S1
19  4.9999999999999996E-2   50    90    16 LB02-PRD-S1
20  6.1111111111111116E-2   50   106    18 LB02-PRD-S1
21  7.2222222222222229E-2   50   108    19 LB02-PRD-S1
22  8.2638888888888887E-2   50   117    17 LB02-PRD-S1
23  9.2361111111111116E-2   65   113    18 LB02-PRD-S1
24  0.10347222222222223     65   114    15 LB02-PRD-S1
25  0.11388888888888889     65   118    16 LB02-PRD-S1
26  0.12430555555555556     65   114    17 LB02-PRD-S1
27  t-ph                  Load    HR    BF GC03-PRD-S1
28  1.0416666666666666E-2   25   101    20 GC03-PRD-S1
29  2.0833333333333332E-2   25    99    20 GC03-PRD-S1
30  3.125E-2                25    97    20 GC03-PRD-S1
31  4.027777777777778E-2    25    96    20 GC03-PRD-S1
32  5.0694444444444452E-2   40    99    19 GC03-PRD-S1
33  6.0416666666666667E-2   40   105    19 GC03-PRD-S1
34  7.2916666666666671E-2   40   107    21 GC03-PRD-S1
35  8.2638888888888887E-2   40   107    25 GC03-PRD-S1
36  9.1666666666666674E-2   55   109    23 GC03-PRD-S1
37  0.10208333333333335     55   111    20 GC03-PRD-S1
38  0.11180555555555556     55   116    21 GC03-PRD-S1
39  0.12430555555555556     55   113    17 GC03-PRD-S1

我想在“LM01-PRD-S1”(id 列)的末尾和“LB02-PRD-S1”等的末尾添加行...

每行都应包含我可以创建和更改的文本。这是我想要获得的(见第 10 和 15 行):

                     time power    hr    fr          id
                   <chr> <chr> <chr> <chr>       <chr>
 1                  t-ph  Load    HR    BF LM01-PRD-S1
 2 1.0416666666666666E-2    25    90    24 LM01-PRD-S1
 3 1.9444444444444445E-2    25    92    23 LM01-PRD-S1
 4 3.0555555555555555E-2    25    93    22 LM01-PRD-S1
 5 4.1666666666666664E-2    25    93    20 LM01-PRD-S1
 6 5.2083333333333336E-2    40    96    20 LM01-PRD-S1
 7 6.1805555555555558E-2    40    98    21 LM01-PRD-S1
 8 7.2222222222222229E-2    40   100    21 LM01-PRD-S1
 9 8.2638888888888887E-2    40   100    20 LM01-PRD-S1
10              9.375E-2    55   105    22 LM01-PRD-S1
11  0.10416666666666667     55   105    20 LM01-PRD-S1
12  0.11319444444444444     55   109    19 LM01-PRD-S1
13  0.12291666666666667     55   112    21 LM01-PRD-S1
14                   ROW   ROW   ROW   ROW LM01-PRD-S1
15  t-ph                  Load    HR    BF LB02-PRD-S1
16  1.0416666666666666E-2   35   102    16 LB02-PRD-S1
17  1.9444444444444445E-2   35   101    17 LB02-PRD-S1
18  3.0555555555555555E-2   35   105    15 LB02-PRD-S1
19  4.0972222222222222E-2   35    96    16 LB02-PRD-S1
20  4.9999999999999996E-2   50    90    16 LB02-PRD-S1
21  6.1111111111111116E-2   50   106    18 LB02-PRD-S1
22  7.2222222222222229E-2   50   108    19 LB02-PRD-S1
23  8.2638888888888887E-2   50   117    17 LB02-PRD-S1
24  9.2361111111111116E-2   65   113    18 LB02-PRD-S1
25  0.10347222222222223     65   114    15 LB02-PRD-S1
26  0.11388888888888889     65   118    16 LB02-PRD-S1
27  0.12430555555555556     65   114    17 LB02-PRD-S1
28                   ROW   ROW   ROW   ROW LB02-PRD-S1
29  t-ph                  Load    HR    BF GC03-PRD-S1
30  1.0416666666666666E-2   25   101    20 GC03-PRD-S1
31  2.0833333333333332E-2   25    99    20 GC03-PRD-S1
32  3.125E-2                25    97    20 GC03-PRD-S1
33  4.027777777777778E-2    25    96    20 GC03-PRD-S1
34  5.0694444444444452E-2   40    99    19 GC03-PRD-S1
35  6.0416666666666667E-2   40   105    19 GC03-PRD-S1
36  7.2916666666666671E-2   40   107    21 GC03-PRD-S1
37  8.2638888888888887E-2   40   107    25 GC03-PRD-S1
38  9.1666666666666674E-2   55   109    23 GC03-PRD-S1
39  0.10208333333333335     55   111    20 GC03-PRD-S1
40  0.11180555555555556     55   116    21 GC03-PRD-S1
39  0.12430555555555556     55   113    17 GC03-PRD-S1
40                   ROW   ROW   ROW   ROW GC03-PRD-S1

数据

structure(list(time = c("t-ph", "1.0416666666666666E-2", "1.9444444444444445E-2", 
"3.0555555555555555E-2", "4.1666666666666664E-2", "5.2083333333333336E-2", 
"6.1805555555555558E-2", "7.2222222222222229E-2", "8.2638888888888887E-2", 
"9.375E-2", "0.10416666666666667", "0.11319444444444444", "0.12291666666666667", 
"t-ph", "1.0416666666666666E-2", "1.9444444444444445E-2", "3.0555555555555555E-2", 
"4.0972222222222222E-2", "4.9999999999999996E-2", "6.1111111111111116E-2", 
"7.2222222222222229E-2", "8.2638888888888887E-2", "9.2361111111111116E-2", 
"0.10347222222222223", "0.11388888888888889", "0.12430555555555556", 
"t-ph", "1.0416666666666666E-2", "2.0833333333333332E-2", "3.125E-2", 
"4.027777777777778E-2", "5.0694444444444452E-2", "6.0416666666666667E-2", 
"7.2916666666666671E-2", "8.2638888888888887E-2", "9.1666666666666674E-2", 
"0.10208333333333335", "0.11180555555555556", "0.12430555555555556"
), power = c("Load", "25", "25", "25", "25", "40", "40", "40", 
"40", "55", "55", "55", "55", "Load", "35", "35", "35", "35", 
"50", "50", "50", "50", "65", "65", "65", "65", "Load", "25", 
"25", "25", "25", "40", "40", "40", "40", "55", "55", "55", "55"
), hr = c("HR", "90", "92", "93", "93", "96", "98", "100", "100", 
"105", "105", "109", "112", "HR", "102", "101", "105", "96", 
"90", "106", "108", "117", "113", "114", "118", "114", "HR", 
"101", "99", "97", "96", "99", "105", "107", "107", "109", "111", 
"116", "113"), fr = c("BF", "24", "23", "22", "20", "20", "21", 
"21", "20", "22", "20", "19", "21", "BF", "16", "17", "15", "16", 
"16", "18", "19", "17", "18", "15", "16", "17", "BF", "20", "20", 
"20", "20", "19", "19", "21", "25", "23", "20", "21", "17"), 
    id = c("LM01-PRD-S1", "LM01-PRD-S1", "LM01-PRD-S1", "LM01-PRD-S1", 
    "LM01-PRD-S1", "LM01-PRD-S1", "LM01-PRD-S1", "LM01-PRD-S1", 
    "LM01-PRD-S1", "LM01-PRD-S1", "LM01-PRD-S1", "LM01-PRD-S1", 
    "LM01-PRD-S1", "LB02-PRD-S1", "LB02-PRD-S1", "LB02-PRD-S1", 
    "LB02-PRD-S1", "LB02-PRD-S1", "LB02-PRD-S1", "LB02-PRD-S1", 
    "LB02-PRD-S1", "LB02-PRD-S1", "LB02-PRD-S1", "LB02-PRD-S1", 
    "LB02-PRD-S1", "LB02-PRD-S1", "GC03-PRD-S1", "GC03-PRD-S1", 
    "GC03-PRD-S1", "GC03-PRD-S1", "GC03-PRD-S1", "GC03-PRD-S1", 
    "GC03-PRD-S1", "GC03-PRD-S1", "GC03-PRD-S1", "GC03-PRD-S1", 
    "GC03-PRD-S1", "GC03-PRD-S1", "GC03-PRD-S1")), .Names = c("time", 
"power", "hr", "fr", "id"), row.names = c(NA, -39L), class = c("grouped_df", 
"tbl_df", "tbl", "data.frame"), vars = "id", drop = TRUE, indices = list(
    26:38, 13:25, 0:12), group_sizes = c(13L, 13L, 13L), biggest_group_size = 13L, labels = structure(list(
    id = c("GC03-PRD-S1", "LB02-PRD-S1", "LM01-PRD-S1")), row.names = c(NA, 
-3L), class = "data.frame", vars = "id", drop = TRUE, .Names = "id"))

请记住,有几行有几个不同的 id。

谢谢!

标签: r

解决方案


尝试以下操作:

r <- do.call(rbind,lapply(split(df,factor(df$id,levels = unique(df$id))),function(v) rbind(v,c(rep("Row",4),head(v[,"id"],1))) ))
rownames(r) <- seq(nrow(r))

要不就

r <- Reduce(rbind,Map(function(v) rbind(v,c(rep("Row",4),head(v[,"id"],1)),make.row.names = F),split(df,factor(df$id,levels = unique(df$id))) ))

这使:

> r
                    time power  hr  fr          id
1                   t-ph  Load  HR  BF LM01-PRD-S1
2  1.0416666666666666E-2    25  90  24 LM01-PRD-S1
3  1.9444444444444445E-2    25  92  23 LM01-PRD-S1
4  3.0555555555555555E-2    25  93  22 LM01-PRD-S1
5  4.1666666666666664E-2    25  93  20 LM01-PRD-S1
6  5.2083333333333336E-2    40  96  20 LM01-PRD-S1
7  6.1805555555555558E-2    40  98  21 LM01-PRD-S1
8  7.2222222222222229E-2    40 100  21 LM01-PRD-S1
9  8.2638888888888887E-2    40 100  20 LM01-PRD-S1
10              9.375E-2    55 105  22 LM01-PRD-S1
11   0.10416666666666667    55 105  20 LM01-PRD-S1
12   0.11319444444444444    55 109  19 LM01-PRD-S1
13   0.12291666666666667    55 112  21 LM01-PRD-S1
14                   Row   Row Row Row LM01-PRD-S1
15                  t-ph  Load  HR  BF LB02-PRD-S1
16 1.0416666666666666E-2    35 102  16 LB02-PRD-S1
17 1.9444444444444445E-2    35 101  17 LB02-PRD-S1
18 3.0555555555555555E-2    35 105  15 LB02-PRD-S1
19 4.0972222222222222E-2    35  96  16 LB02-PRD-S1
20 4.9999999999999996E-2    50  90  16 LB02-PRD-S1
21 6.1111111111111116E-2    50 106  18 LB02-PRD-S1
22 7.2222222222222229E-2    50 108  19 LB02-PRD-S1
23 8.2638888888888887E-2    50 117  17 LB02-PRD-S1
24 9.2361111111111116E-2    65 113  18 LB02-PRD-S1
25   0.10347222222222223    65 114  15 LB02-PRD-S1
26   0.11388888888888889    65 118  16 LB02-PRD-S1
27   0.12430555555555556    65 114  17 LB02-PRD-S1
28                   Row   Row Row Row LB02-PRD-S1
29                  t-ph  Load  HR  BF GC03-PRD-S1
30 1.0416666666666666E-2    25 101  20 GC03-PRD-S1
31 2.0833333333333332E-2    25  99  20 GC03-PRD-S1
32              3.125E-2    25  97  20 GC03-PRD-S1
33  4.027777777777778E-2    25  96  20 GC03-PRD-S1
34 5.0694444444444452E-2    40  99  19 GC03-PRD-S1
35 6.0416666666666667E-2    40 105  19 GC03-PRD-S1
36 7.2916666666666671E-2    40 107  21 GC03-PRD-S1
37 8.2638888888888887E-2    40 107  25 GC03-PRD-S1
38 9.1666666666666674E-2    55 109  23 GC03-PRD-S1
39   0.10208333333333335    55 111  20 GC03-PRD-S1
40   0.11180555555555556    55 116  21 GC03-PRD-S1
41   0.12430555555555556    55 113  17 GC03-PRD-S1
42                   Row   Row Row Row GC03-PRD-S1

推荐阅读