【发布时间】:2019-11-11 12:36:53
【问题描述】:
我在 R 中有一个名为 cryptdeltact 的数据框,其中包含如下示例信息
# A tibble: 2,293 x 7
# Groups: Name [72]
Name Detector N Value sd se ci
<fct> <fct> <dbl> <dbl> <dbl> <dbl> <dbl>
1 VG 2H 1 SB1 C ATM 6 11.4 0.653 0.267 0.686
2 VG 2H 1 SB1 C BetaActin 6 0.0199 0.588 0.240 0.617
3 VG 2H 1 SB1 C BMPR1a 6 6.49 0.591 0.241 0.620
4 VG 2H 1 SB1 C BMPR2 6 7.19 0.614 0.251 0.645
5 VG 2H 1 SB1 C Brca1 6 11.5 0.640 0.261 0.672
6 VG 2H 1 SB1 C Brca2 6 11.9 0.840 0.343 0.882
7 VG 2H 1 SB1 C cmyc 6 8.20 0.580 0.237 0.608
8 VG 2H 1 SB1 C DNAPKCs 6 11.5 0.651 0.266 0.683
9 VG 2H 1 SB1 C Ercc1 6 11.4 0.783 0.320 0.822
10 VG 2H 1 SB1 C Fen1 6 9.05 0.629 0.257 0.660
# … with 2,283 more rows
我想向此数据框添加三个新列:模型、时间和区域。这些新列的所有信息都包含在现有的“名称”列中。时间是“名称”中的第二条信息,即。 “0h”、“2h”或“5h”。区域是倒数第二个,即“SB1”、“SB2”、“SB3”或“SB4”。但是 Model 是前两个字母和最后一个字母 ie 的组合。 “VG C”或“VG V”或“WT C”或“WT V”。我知道答案在于从 Name 字符串中提取适当的信息并将其放入一个新列中,但我正在努力解决语法问题。
最终表格的列理想情况下应如下所示(提取后我可以将“VG V”更改为“VG Villus”并完全删除名称列)
Model Time Region Detector N sd se ci
<chr> <dbl> <chr> <chr> <dbl> <dbl> <dbl> <dbl>
1 VG Villus 0 SB1 Fen1 1 NA NA NA
2 VG Villus 0 SB1 Lig3 1 NA NA NA
3 VG Villus 0 SB1 PARP1 1 NA NA NA
4 VG Villus 0 SB1 PolTheta 1 NA NA NA
5 VG Villus 0 SB1 WRN 1 NA NA NA
6 VG Villus 2 SB1 Fen1 3 1.22 0.706 3.04
7 VG Villus 2 SB1 Lig3 3 2.11 1.22 5.25
8 VG Villus 2 SB1 Mre11a 3 0.601 0.347 1.49
9 VG Villus 2 SB1 PARP1 3 1.94 1.12 4.82
10 VG Villus 2 SB1 PolTheta 3 2.74 1.58 6.82
对基本问题表示歉意,但我确信这可能会比目前占用的时间少得多!
【问题讨论】:
-
我不清楚您是如何获得这些值的。例如,您能解释一下如何获得第 6 行的值吗?
sd为 1.22,se为 0.706,ci为 3.04? -
我们可以尝试做正则表达式,但也许你想考虑用另一个 data.frame 来注释你的名字,并有 Model、Time 和 Region 列?然后你可以简单地离开加入这两个
-
@RonakShah 抱歉,我只是将该数据框用作我想要的列名的示例 - 值是经过额外处理步骤后的原始值。