我的数据框只有一列,如下所示:
>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
是否有一个函数可以读取列的内容并根据它输出新的向量?
答案 0 :(得分:6)
substr
应该足够了。
尝试:
> transform(df, sampleGroup = substr(df$Sample_Name, 5, 6))
Sample_Name 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
答案 1 :(得分:2)
您也可以使用sub
功能。
df$sampleGroup <- sub("^.*(..)_A.*", "\\1", df$Sample_Name)