【问题标题】:Create a variable which is only a certain portion of a string variable in Stata在Stata中创建一个变量,它只是字符串变量的一部分
【发布时间】:2014-01-23 17:01:54
【问题描述】:

我有一个数据集,其中有一个变量,该变量以 urls 作为其观察值。我正在尝试创建另一个变量,该变量将列出“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”变量中有 AND 最后一个“.”之前的部分有 ≤ 2 个字符 (.co ),然后使用倒数第二个 "." 之后的部分。作为域类型(即 .co.uk)

      • 如果最后一个“.”之后的值在“url”变量中有 AND 最后一个“.”之前的部分有 > 2 个字符,然后使用最后一个 "." 之后的部分。作为域类型(例如 freeshootinggames.us)

另外,还有其他方法吗?

我在 Windows 8 Pro x64 上使用 Stata 13.1

谢谢!!

【问题讨论】:

    标签: stata


    【解决方案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
    

    【讨论】:

      猜你喜欢
      • 2022-11-24
      • 1970-01-01
      • 2014-02-14
      • 1970-01-01
      • 2015-05-20
      • 1970-01-01
      • 2020-04-28
      • 1970-01-01
      • 2012-03-30
      相关资源
      最近更新 更多