在 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)