创建一个变量,该变量只是Stata中字符串变量的特定部分
我有一个数据集,它有一个变量,它的观察值是URL。我正在尝试创建另一个变量,该变量将在“url”变量(创建一个变量,该变量只是Stata中字符串变量的特定部分,stata,Stata,我有一个数据集,它有一个变量,它的观察值是URL。我正在尝试创建另一个变量,该变量将在“url”变量(.com,.org,.co.uk等)中列出观察的域类型 我可以使用“.”解析“url”变量 spliturl,p(.) 但这并不能确定我的域名 问题的产生是由于“url”的类型差异很大。例如 虽然www.google.com将被分成3个变量,http://www.nih.nlm.gov将被分为4部分 类似地,虽然www.yahoo.com被分成3部分,https://www.movies.ya
.com
,.org
,.co.uk
等)中列出观察的域类型
我可以使用“.”解析“url”变量
spliturl,p(.)
但这并不能确定我的域名
问题的产生是由于“url”的类型差异很大。例如
- 虽然
将被分成3个变量,www.google.com
将被分为4部分http://www.nih.nlm.gov
- 类似地,虽然
被分成3部分,www.yahoo.com
将被分为5部分https://www.movies.yahoo.co.au
- 如果“url”变量中最后一个“.”之后的部分≥ 3个字符(.com/.edu/.org/.gov或.info),然后将其用作域类型
- 如果“url”变量中最后一个“.”后面的部分包含<3个字符(.uk/.au/.tv等),和最后一个“.”前面的部分包含≤ 2个字符(.co),然后使用倒数第二个“.”后面的部分作为域类型(即.co.uk)
- 如果“url”变量中最后一个“.”之后的值小于3个字符(.us domains)且最后一个“.”之前的部分大于2个字符,则使用最后一个“.”之后的部分作为域类型(例如freeshootinggames.us)
- 如果“url”变量中最后一个“.”后面的部分包含<3个字符(.uk/.au/.tv等),和最后一个“.”前面的部分包含≤ 2个字符(.co),然后使用倒数第二个“.”后面的部分作为域类型(即.co.uk)
谢谢 在此类问题中,反转字符串是一个有用的技巧。试着这样做:
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
gen rev_url=反向(url)
拆分版本url,解析(.)根(域)
替换域_1=反向(域_1)
替换域_2=反向(域_2)
替换域_1=域_2+“+”域_1如果长度(域_2)