我有一个数据集,其中有一个变量,其中包含url作为其观察结果。我正在尝试创建另一个变量,该变量将在“url”变量(.com
,.org
,.co.uk
等中列出观察的域类型。)
我可以通过使用“。”解析来拆分“url”变量。
split url, p(.)
但这不会明确地给我域名。
问题出现是由于“url”类型的差异很大。例如
www.google.com
将被分为3个变量,http://www.nih.nlm.gov
将被拆分为4个www.yahoo.com
分为3时,https://www.movies.yahoo.co.au
会被拆分为5。如何在stata中编写以下公式,以便从“url”变量创建“域类型”变量
- 如果是最后一个“。”之后的部分。在“url”变量中有≥3个字符(.com / .edu / .org / .gov或.info),然后将其用作域类型
- 如果是最后一个“。”之后的部分。在“url”变量中有< 3个字符(.uk / .au / .tv等) AND 最后一个“。”之前的部分。有≤2个字符(.co),然后使用倒数第二个“。”之后的部分。作为域类型(即.co.uk)
- 如果最后一个“。”之后的值。在“url”变量中有< 3个字符(.us域名) AND 最后一个“。”之前的部分。有> 2个字符,然后使用最后一个“。”之后的部分。作为域类型(例如freeshootinggames.us)
另外,还有另一种方法吗?
我在Windows 8 Pro x64上使用Stata 13.1
谢谢!
答案 0 :(得分:2)
在这样的问题中,反转字符串是一个有用的技巧。尝试这样的事情:
gen rev_url = reverse(url)
split rev_url, parse(.) gen(domain_)
replace domain_1 = reverse(domain_1)
replace domain_2 = reverse(domain_2)
replace domain_1 = domain_2 + "." + domain_1 if length(domain_2)<=2 & length(domain1)<3
rename domain_1 domain
drop domain_* rev_url