【发布时间】:2021-04-15 00:17:06
【问题描述】:
请注意,我对 R 非常陌生
我有一个大型数据框,我想根据列值的开头将其分成多个数据框。 所以“MS”列有 6 个重复值,大约 60 个唯一值。我想为每个以相同变量字母/s 开头的唯一值创建一个数据框。有点混乱,但我希望在下面的示例中更有意义。
有没有办法自动化这个?我设法为一个变量这样做,但为每个变量手动这样做听起来并不好。
D_MtC <- structure(list(MS = c("bl1", "bl1", "bl1", "bl1", "bl1", "bl1",
"bl2", "bl2", "bl2", "bl2", "bl2", "bl2", "bu1", "bu1", "bu1",
"bu1", "bu1", "bu1", "bu10", "bu10"),
MtC = c(276.9171211, 276.9171211, 276.9171211,
276.9171211, 276.9171211, 276.9171211,
287.5640738, 287.5640738, 287.5640738,
287.5640738, 287.5640738, 287.5640738,
145.5970013, 145.5970013, 145.5970013,
145.5970013, 145.5970013, 145.5970013,
21.16157907, 21.16157907),
Rainfall = c(2L, 0L, 61L, 5L, 0L, 28L, 1L, 0L, 35L, 2L, 0L, 7L,
0L, 0L, 16L, 2L, 1L, 4L, 0L, 0L)),
row.names = c(NA, 20L), class = "data.frame")
D_MtC
#> MS MtC Rainfall
#> 1 bl1 276.91712 2
#> 2 bl1 276.91712 0
#> 3 bl1 276.91712 61
#> 4 bl1 276.91712 5
#> 5 bl1 276.91712 0
#> 6 bl1 276.91712 28
#> 7 bl2 287.56407 1
#> 8 bl2 287.56407 0
#> 9 bl2 287.56407 35
#> 10 bl2 287.56407 2
#> 11 bl2 287.56407 0
#> 12 bl2 287.56407 7
#> 13 bu1 145.59700 0
#> 14 bu1 145.59700 0
#> 15 bu1 145.59700 16
#> 16 bu1 145.59700 2
#> 17 bu1 145.59700 1
#> 18 bu1 145.59700 4
#> 19 bu10 21.16158 0
#> 20 bu10 21.16158 0
对包含所有以 'bu' 开头的变量的数据框进行子集
MtC_bu <- D_MtC[grep("bu.*", D_MtC$MS),]
MtC_bu
#> MS MtC Rainfall
#> 13 bu1 145.59700 0
#> 14 bu1 145.59700 0
#> 15 bu1 145.59700 16
#> 16 bu1 145.59700 2
#> 17 bu1 145.59700 1
#> 18 bu1 145.59700 4
#> 19 bu10 21.16158 0
#> 20 bu10 21.16158 0
这是“MS”中唯一值的完整列表
所以我真的只想从原始数据帧中制作 7 个数据帧,每个唯一的开头字母 1 个。例如,对于数据框bu,我希望它包含所有包含 bu1-21 的行
MS
#> MS_u c.1.63.
#> 1 bl1 1
#> 2 bl2 2
#> 3 bu1 3
#> 4 bu10 4
#> 5 bu11 5
#> 6 bu12 6
#> 7 bu13 7
#> 8 bu14 8
#> 9 bu16 9
#> 10 bu17 10
#> 11 bu18 11
#> 12 bu19 12
#> 13 bu2 13
#> 14 bu21 14
#> 15 bu3 15
#> 16 bu6 16
#> 17 bu7 17
#> 18 bu8 18
#> 19 bu9 19
#> 20 d1 20
#> 21 d2 21
#> 22 d3 22
#> 23 d4 23
#> 24 f1 24
#> 25 f11 25
#> 26 f16 26
#> 27 f18 27
#> 28 f29 28
#> 29 f3 29
#> 30 f30 30
#> 31 f31 31
#> 32 f32 32
#> 33 f33 33
#> 34 f34 34
#> 35 f35 35
#> 36 f37 36
#> 37 f4 37
#> 38 f40 38
#> 39 f44 39
#> 40 f47 40
#> 41 f49 41
#> 42 f5 42
#> 43 f50 43
#> 44 f51 44
#> 45 f6 45
#> 46 f7 46
#> 47 f8 47
#> 48 f9 48
#> 49 h2 49
#> 50 h3 50
#> 51 o1 51
#> 52 o2 52
#> 53 o3 53
#> 54 o4 54
#> 55 o5 55
#> 56 pi1 56
#> 57 pi2 57
#> 58 pi3 58
#> 59 pi4 59
#> 60 pl1 60
#> 61 pl2 61
#> 62 pr1 62
#> 63 pr2 63
【问题讨论】: