在 R 数据框中组合用连字符分隔的两列的值。

要组合 R 数据框中用连字符分隔的两列的值,我们可以使用 apply 函数。

例如,如果我们有一个名为 df 的数据框,它只包含两列 X 和 Y,那么我们可以使用下面给出的以下命令组合 X 和 Y 中的值 -

df$X_Y<-apply(df,1,paste,collapse="-")

示例 1

考虑下面给出的数据框 -

Age<-sample(20:50,20)
Height<-sample(130:200,20)
df1<-data.frame(Age,Height)
df1

创建了以下数据框

  Age Height
1  22   147
2  37   138
3  28   184
4  40   154
5  32   193
6  20   135
7  47   185
8  27   198
9  46   156
10 29   170
11 44   140
12 43   167
13 23   182
14 49   171
15 31   150
16 25   148
17 21   180
18 45   169
19 39   179
20 36   133

要将上面创建的数据框中用连字符分隔的 df1 中两列的值组合起来,请将以下代码添加到上面的代码段中 -

Age<-sample(20:50,20)
Height<-sample(130:200,20)
df1<-data.frame(Age,Height)
df1$Age_Height<-apply(df1,1,paste,collapse="-")
df1
输出结果

如果您将上述所有给定的片段作为单个程序执行,它会生成以下输出 -

    Age Height Age_Height
 1   22 147       22-147
 2   37 138       37-138
 3   28 184       28-184
 4   40 154       40-154
 5   32 193       32-193
 6   20 135       20-135
 7   47 185       47-185
 8   27 198       27-198
 9   46 156       46-156
10   29 170       29-170
11   44 140       44-140
12   43 167       43-167
13   23 182       23-182
14   49 171       49-171
15   31 150       31-150
16   25 148       25-148
17   21 180       21-180
18   45 169       45-169
19   39 179       39-179
20   36 133       36-133

示例 2

以下代码段创建了一个示例数据框 -

Group<-sample(c("First","Second","Third"),20,replace=TRUE)
Rate<-sample(1:10,20,replace=TRUE)
df2<-data.frame(Group,Rate)
df2
输出结果

如果您执行上面给定的代码段,它会生成以下输出 -

   Group Rate
1 First    8
2 Second   4
3 First    5
4 Second   7
5 Second   4
6 Third    7
7 Second   9
8 Second   7
9 First    7
10 Second  3
11 First  10
12 Second  9
13 First   7
14 First   8
15 Second  1
16 Second  8
17 Second  5
18 Third  10
19 Second  4
20 First   5

要将上面创建的数据框中用连字符分隔的 df2 中两列的值组合起来,请将以下代码添加到上面的代码段中 -

Group<-sample(c("First","Second","Third"),20,replace=TRUE)
Rate<-sample(1:10,20,replace=TRUE)
df2<-data.frame(Group,Rate)
df2$Group_Rate<-apply(df2,1,paste,collapse="-")
df2
输出结果

如果您将上述所有给定的片段作为单个程序执行,它会生成以下输出 -

     Group Rate Group_Rate
1    First    8   First- 8
2   Second    4  Second- 4
3    First    5   First- 5
4   Second    7  Second- 7
5   Second    4  Second- 4
6    Third    7   Third- 7
7   Second    9  Second- 9
8   Second    7  Second- 7
9    First    7   First- 7
10  Second    3  Second- 3
11   First   10   First-10
12  Second    9  Second- 9
13   First    7   First- 7
14   First    8   First- 8
15  Second    1 Second-  1
16  Second    8 Second-  8
17  Second    5 Second-  5
18   Third   10 Third-  10
19  Second    4 Second-  4
20   First    5 First-   5