查看原文
其他

split命令-分离字符串变量

split命令-分离字符串变量

Stata中的split命令允许将一个字符串变量分离为多个字符串变量。Stata将用分隔符分隔变量。默认分隔符是一个空格字符,但是您可以指定所需的分隔符来充分分割变量。这个命令对于分离您想要保存在单独变量中的一些信息非常有用。

如何使用:

分离变量
split variable

要指定不同的分隔符:
split variable, parse(character)

指定创建的新变量的名称:
split variable, generate(newvariablename)

根据您的目标,该命令还有其他有用的选项。查看带有命令split的帮助文件,了解有关可用选项的更多信息。

范例1

在本例中,我将使用Stata示例数据集auto.dta。在这个数据集中,有一个名为make的字符串变量,它包含数据集中每辆汽车的品牌和型号。我想把这分为两个变量-一个包含制造和第二个包含模型名。这样做的好处是我可以将make变量转换为类别变量。这样就可以对汽车进行分析,找出汽车制造商造成的差异。

在命令窗格中,我输入以下命令:

sysuse auto, clear
browse make

这显示了make变量的原始形式:

正如您所看到的,变量包含仅用空格分隔的单词,因此我们只需要默认的空格分隔符。

我现在要拆分并重新排列这个变量。在命令窗口输入

split make, generate(model)
drop make
encode model1, generate(make)
generate model = model2 + " " + model3
drop model1 model2 model3
label variable make "Car Manufacturer"
label variable model "Car Model Name"
order make model
browse make model

browse命令显示所做的更改:

如您所见,现在制造商和型号是两个独立的变量。make变量已被转换为使用encode命令附加标签的类别(数字)变量。

范例2

在本例中,我们将使用Stata示例数据集pop2000.dta。在这个数据集中,有一个保存为字符串的年龄组变量,称为agestr。我们要拆分这个变量我给它起个名字叫age,它会生成两个变量,分别是age1和age2。这两个变量将包含较低和较高的年龄数。在命令窗格中:

sysuse pop2000.dta, clear
browse agestr

该变量包含年龄范围,除第一个之外,每个年龄范围都用单词“to”分隔。因为我们可以在拆分命令中添加多个解析字符串,所以在本例中,我将同时使用" to "和" Under "来拆分字符串。为了分离这个字符串变量,我们使用以下命令:

split agestr, parse("to" "Under") generate(age)
browse agestr age1 age2


在这里你可以看到年龄已经被成功分离。如果您想将这些转换为数值变量,可以使用destring命令。例如:

destring age1, replace
destring age2, replace

如果您希望提取一个不容易被单个字符或多个替代字符分离的特定文本序列,那么最好使用Stata功能强大的正则表达式命令。推荐阅读:Stata:正则表达式


您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存