2017-06-21 4 views
0

In einem großen Datensatz von US-Aktien habe ich eine ganzzahlige Variable mit SIC-Codes. https://www.sec.gov/info/edgar/siccodes.htmKlassifizierung Dummy R

Ich mag würde einen Dummy-Variable die Hauptgruppe von 50, das heißt eine Variable angibt, schaffen, die für eine dauerhaften Güter und 0 sonst auf 1 erfolgt.

habe ich versucht, den Code:

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

Aber, natürlich, nehmen nicht die hierarchische Struktur von SIC berücksichtigt. Ich möchte die "50" nur für die ersten beiden Ziffern bekommen.

(New bis R)

/Alex

Antwort

0

Verwenden entweder der Division oder Pad Null nach links und die ersten beiden Buchstaben zu überprüfen.

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") 
0
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) 

Ausgang:

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 

Nachtrag:

Es gibt mehrere Möglichkeiten, dieses Problem zu nähern.

Ich würde vorschlagen, das Stringi-Paket Link to documentation für die Bearbeitung von Zeichenfolgen zu überprüfen.

Ebenso wie das Caret-Paket - documentation für die Verdummung von Variablen und anderen statistischen Transformationen.