创建一个变量,该变量只是Stata中字符串变量的特定部分

创建一个变量,该变量只是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

我有一个数据集,它有一个变量,它的观察值是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.yahoo.co.au
    将被分为5部分
如何在stata中编写以下公式,从“url”变量创建“domain type”变量

  • 如果“url”变量中最后一个“.”之后的部分≥ 3个字符(.com/.edu/.org/.gov或.info),然后将其用作域类型

    • 如果“url”变量中最后一个“.”后面的部分包含<3个字符(.uk/.au/.tv等),最后一个“.”前面的部分包含≤ 2个字符(.co),然后使用倒数第二个“.”后面的部分作为域类型(即.co.uk)

      • 如果“url”变量中最后一个“.”之后的值小于3个字符(.us domains)且最后一个“.”之前的部分大于2个字符,则使用最后一个“.”之后的部分作为域类型(例如freeshootinggames.us)

还有,还有别的方法吗

我在Windows 8 Pro x64上的Stata 13.1中工作


谢谢

在此类问题中,反转字符串是一个有用的技巧。试着这样做:

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)