【发布时间】:2015-01-19 06:29:24
【问题描述】:
我有一个只有一列的数据框,如下所示:
>df
Sample_Name
1 GW16F1_A-1
2 GW16F1_A-10
3 GW16F1_A-12
4 GW16F2_A-2
5 GW16F2_A-3
6 GW16F2_A-5
7 GW16V1_A-6
8 GW16V1_A-7
9 GW16V2_A-8
10 GW16V2_A-9
我想根据 Sample_Name 列的内容在此数据框中添加第二列,因此输出如下所示:
>df
SampleName SampleGroup
1 GW16F1_A-1 F1
2 GW16F1_A-10 F1
3 GW16F1_A-12 F1
4 GW16F2_A-2 F2
5 GW16F2_A-3 F2
6 GW16F2_A-5 F2
7 GW16V1_A-6 V1
8 GW16V1_A-7 V1
9 GW16V2_A-8 V2
10 GW16V2_A-9 V2
是否有一个函数可以读取列的内容并基于它输出一个新的向量?
【问题讨论】:
-
这看起来像一个简单的
substr可以工作。不需要正则表达式。 -
是否有比您在示例中显示的数字更多的数字,例如 F13 中的数字?
-
不在这个特定的数据集中,但我很想知道基于@AnandaMahto 的回答的解决方法。
-
@PinkSharpie,这取决于您可以在多大程度上概括数据集中的模式。例如,您能否将其概括为“V 或 F 后跟一定数量的数字,然后是下划线”的序列?如果这是概括,
regex实际上会比substr更好。 -
例如
gsub(".*([VF][0-9]+)_.*", "\\1", df$Sample_Name)....
标签: r matrix vector pattern-matching substr