【问题标题】:Classification dummy R分类假人 R
【发布时间】:2017-06-21 08:18:04
【问题描述】:

在美国股票的大型数据集中,我有一个包含 SIC 代码的整数变量。 https://www.sec.gov/info/edgar/siccodes.htm

我想创建一个虚拟变量来指示50 的主要组,即耐用品取1,否则取0。

我试过代码:

data$durable <- as.integer(grepl(pattern = "50", x = data$sic))

但这当然没有考虑到 SIC 的层次结构。我只想得到前两位数字的“50”。

(R 新手)

/亚历克斯

【问题讨论】:

    标签: r dummy-variable


    【解决方案1】:

    使用除法,或向左填充零并检查前两个字母。

    code <- c(100, 102, 501, 5010)
    
    # approach 1
    as.integer(as.integer(code/100) == 50)
    
    # approach 2
    as.integer(substring(sprintf("%04d", code), 1, 2) == "50")
    

    【讨论】:

      【解决方案2】:
      library(readxl)
      library(dplyr)
      library(stringi)
      
      data_sic <- read_excel("./sic_example.xlsx")
      
      data_sic$temp1 <- stri_sub(data_sic$SIC,1,2)
      
      data_sic <- mutate(data_sic, durable_indicator =
                           ifelse(temp1 == "50", 1, 0))
      
      str(data_sic)
      

      输出:

      str(data_sic)
      Classes ‘tbl_df’, ‘tbl’ and 'data.frame':   6 obs. of  4 variables:
       $ SIC              : num  4955 4961 4991 5000 5010 ...
       $ Industry Title   : chr  "HAZARDOUS WASTE MANAGEMENT" "STEAM & AIR-CONDITIONING SUPPLY" "COGENERATION SERVICES & SMALL POWER PRODUCERS" "WHOLESALE-DURABLE GOODS" ...
       $ temp1            : chr  "49" "49" "49" "50" ...
       $ durable_indicator: num  0 0 0 1 1 1
      

      附录:

      有多种方法可以解决这个问题。

      我建议查看 stringi 包 Link to documentation 以进行字符串编辑。

      以及插入符号包 - documentation 用于变量的虚拟化和其他统计转换。

      【讨论】:

        猜你喜欢
        • 2018-08-14
        • 2019-10-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-03-31
        • 2021-02-23
        • 2022-01-22
        • 1970-01-01
        相关资源
        最近更新 更多