在 R 中,如何根据第一列的内容向数据框中添加一列?
In R, how to add a column to a data frame based on the contents of the first column?
我有一个只有一列的数据框,如下所示:
>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
应该足够了。
尝试:
> 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
您也可以使用 sub
功能。
df$sampleGroup <- sub("^.*(..)_A.*", "\1", df$Sample_Name)
我有一个只有一列的数据框,如下所示:
>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
应该足够了。
尝试:
> 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
您也可以使用 sub
功能。
df$sampleGroup <- sub("^.*(..)_A.*", "\1", df$Sample_Name)