r - 添加有条件的行
问题描述
这是我的数据框:
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 <- 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
推荐阅读
- mvvm - LIveData 每次从活动中观察到两次以上并发出先前的数据
- sql - 将某些列取消旋转到某些行
- python - 什么是用于列出非二叉树中祖先的后代的python递归方法?
- svn - 无法从我的 mac 连接到 svn(访问被拒绝)
- flutter - 切换到 Dart 2.12 后如何使用可比较函数调整函数
- java - Fortify - 冗余空值检查
- php - 奇怪的 PHP 正则表达式 Preg_Match 错误?
- javascript - Firebase 实时数据库查询显示未定义?
- javascript - 我想将 Framework7 与 Electron.NET 一起使用
- mongodb - 如何根据少数组合获得 MONGO 文档,而这些组合不止一次