假设我有这些数据:
clear all
set obs 2
gen title = "dog - cat - horse" in 1
replace title = "chicken - frog - ladybug" in 2
tempfile data
save `data'
我可以将其分为三个部分:
use `data', clear
split title, p(" - ")
我可以将它们分成两部分,丢弃第三部分:
use `data', clear
split title, p(" - ") limit(2)
是否有现成的解决方案可以将其拆分成两个部分,但将第一个拆分字符 (在本例中为破折号) 之后的所有内容分组到第二个变量中?在 R 中,我将使用separate
该extra="merge"
选项 (请参阅tidyr 仅分离前 n 个实例)。
换句话说,对于第一行,我希望第一个观察结果是,title1
并且dog
结果title2
是cat - horse
。
我意识到使用自定义代码可以做到这一点(请参阅Stata 将字符串拆分为几部分),但我希望使用类似于 Stata split
/R的简单命令separate
来实现我的目标。
目前这不是官方
split
命令中的选项。(全面披露:我是之前的作者。)您可以编写自己的命令。这个命令需要更多的通用性和更多的错误检查,但它可以满足您对数据示例的要求。详细信息:是否需要修剪空格?
还请注意该
egen
函数ends()
及其head
选项tail
。使用该函数需要两次调用。它每次只生成一个变量。