此前介绍过字符型变量的相关计算:
Stata 字符型变量运算
除了字符型变量的分列,也可以将多列(多个变量)合并为一个字符型变量。使用 tidy 包提供的 unite命令,可以实现该效果。使用 unite 命令合并的多个变量,可以是数值型或字符型,合并的结果是字符型变量,其功能类似于 R 语言 tidyr 包的 homonym 函数。
安装:
首次使用,需要先安装 tidy 命令。tidy 命令包还提供了 spread 与 gather 命令用于长宽数据转换。
基础语法:
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(%)
|