此前介绍过字符型变量的相关计算:

Stata 字符型变量运算

除了字符型变量的分列,也可以将多列(多个变量)合并为一个字符型变量。使用 tidy 包提供的 unite命令,可以实现该效果。使用 unite 命令合并的多个变量,可以是数值型或字符型,合并的结果是字符型变量,其功能类似于 R 语言 tidyr 包的 homonym 函数。

安装:

首次使用,需要先安装 tidy 命令。tidy 命令包还提供了 spread 与 gather 命令用于长宽数据转换

1
ssc install tidy

基础语法:

1
2
3
unite varlist , gen(newvar) [sep(string)]
/* gen(newvar): 定义新生成变量的名称;
sep(string): 定义变量之间的分隔符, 默认是下划线"_"。 */

示例:

(⚠️注意:不同设备的显示字体不同,可能会出现字符错位的现象。将错位的文本复制到其他文本编辑器 / Stata do 文件编辑器中,可以解决此问题。)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
set obs 10
gen a=1
gen year="2022"
gen month="June"
** 合并a、b、c三个变量
unite a year month, gen(x) sep(%)

** 结果展示
+--------------------------------+
| a year month x |
|--------------------------------|
1. | 1 2022 June 1%2022%June |
2. | 1 2022 June 1%2022%June |
3. | 1 2022 June 1%2022%June |
4. | 1 2022 June 1%2022%June |
5. | 1 2022 June 1%2022%June |
6. | 1 2022 June 1%2022%June |
7. | 1 2022 June 1%2022%June |
8. | 1 2022 June 1%2022%June |
9. | 1 2022 June 1%2022%June |
10. | 1 2022 June 1%2022%June |
+--------------------------------+

上述用法与 egen 命令的 concat 函数类似(传送门)。

1
egen x = concat(a year month),punct(%)