library(foreign)
ESS <- read.spss("C:/Users/lssi5/YandexDisk/datafiles/ESS5e03.sav", use.value.labels=T, to.data.frame=T)

Variable selection

Using []

ESS1 <- ESS[c("eduyrs", "agea", "agertr", "gndr", 
             "cntry", "icmnact", "facntr", "mocntr",
             "ipeqopt", "ipudrst", "impenv",
             "ipfrule", "ipbhprp", "impfun")]
dim(ESS1)

Using subset

ESS1 <- subset(ESS, select = c("eduyrs", "agea", "agertr", "gndr", 
             "cntry", "icmnact", "facntr", "mocntr",
             "ipeqopt", "ipudrst", "impenv",
             "ipfrule", "ipbhprp", "impfun"))
dim(ESS1)
## [1] 52458    14

Using select() from dplyr library

library(dplyr)
ESS1 <- select(ESS, c("eduyrs", "agea", "agertr", "gndr", 
             "cntry", "icmnact", "facntr", "mocntr",
             "ipeqopt", "ipudrst", "impenv",
             "ipfrule", "ipbhprp", "impfun"))
dim(ESS1)

Recoding: continuous to factor

Using []

ESS1$eduyrs <- as.numeric(ESS1$eduyrs)
ESS1$eduyrs3[ESS1$eduyrs <= 10] <- "basic" 
ESS1$eduyrs3[ESS1$eduyrs > 10 & ESS1$eduyrs <= 16] <- "grad" 
ESS1$eduyrs3[ESS1$eduyrs > 16] <- "post-grad" 
table(ESS1$eduyrs, ESS1$eduyrs3)
##     
##      basic grad post-grad
##   1    289    0         0
##   2     98    0         0
##   3    166    0         0
##   4    433    0         0
##   5   1166    0         0
##   6    388    0         0
##   7   1443    0         0
##   8   1137    0         0
##   9   2968    0         0
##   10  3041    0         0
##   11     0 3647         0
##   12     0 5403         0
##   13     0 9125         0
##   14     0 4593         0
##   15     0 3578         0
##   16     0 3646         0
##   17     0    0      3427
##   18     0    0      2522
##   19     0    0      1953
##   20     0    0       958
##   21     0    0       898
##   22     0    0       286
##   23     0    0       239
##   24     0    0       115
##   25     0    0        99
##   26     0    0       103
##   27     0    0        19
##   28     0    0        15
##   29     0    0        13
##   30     0    0         6
##   31     0    0        21
##   32     0    0         1
##   33     0    0         1
##   34     0    0         4
##   35     0    0         2
##   36     0    0         3
##   37     0    0         2
##   38     0    0         1
##   39     0    0        12
##   40     0    0         1
##   41     0    0         1
##   42     0    0         3
##   43     0    0         1
##   44     0    0         1
##   45     0    0         1

Using cut() function

ESS1$eduyrs3 <- cut(ESS1$eduyrs, c(1, 10, 16, 46))
table(ESS1$eduyrs, ESS1$eduyrs3)
##     
##      (1,10] (10,16] (16,46]
##   1       0       0       0
##   2      98       0       0
##   3     166       0       0
##   4     433       0       0
##   5    1166       0       0
##   6     388       0       0
##   7    1443       0       0
##   8    1137       0       0
##   9    2968       0       0
##   10   3041       0       0
##   11      0    3647       0
##   12      0    5403       0
##   13      0    9125       0
##   14      0    4593       0
##   15      0    3578       0
##   16      0    3646       0
##   17      0       0    3427
##   18      0       0    2522
##   19      0       0    1953
##   20      0       0     958
##   21      0       0     898
##   22      0       0     286
##   23      0       0     239
##   24      0       0     115
##   25      0       0      99
##   26      0       0     103
##   27      0       0      19
##   28      0       0      15
##   29      0       0      13
##   30      0       0       6
##   31      0       0      21
##   32      0       0       1
##   33      0       0       1
##   34      0       0       4
##   35      0       0       2
##   36      0       0       3
##   37      0       0       2
##   38      0       0       1
##   39      0       0      12
##   40      0       0       1
##   41      0       0       1
##   42      0       0       3
##   43      0       0       1
##   44      0       0       1
##   45      0       0       1

Recoding: factor to factor

Using []

ESS1$impfun3[ESS1$impfun == "Very much like me" | ESS1$impfun == "Like me"] <- 3
ESS1$impfun3[ESS1$impfun == "A little like me" | ESS1$impfun == "Somewhat like me"] <- 2
ESS1$impfun3[ESS1$impfun == "Not like me" | ESS1$impfun == "Not like me at all"] <- 1
table(ESS1$impfun, ESS1$impfun3)
##                     
##                          1     2     3
##   Very much like me      0     0  6303
##   Like me                0     0 13650
##   Somewhat like me       0 12619     0
##   A little like me       0  9198     0
##   Not like me         6570     0     0
##   Not like me at all  2791     0     0

Using recode() from car

ESS1$impfun3 <- recode(ESS1$impfun, "Very much like me" = 3,
"Like me" = 3, "Somewhat like me" = 2, "A little like me" = 2, "Not like me" = 1, 
"Not like me at all" = 1)
table(ESS1$impfun, ESS1$impfun3)
##                     
##                          1     2     3
##   Very much like me      0     0  6303
##   Like me                0     0 13650
##   Somewhat like me       0 12619     0
##   A little like me       0  9198     0
##   Not like me         6570     0     0
##   Not like me at all  2791     0     0

Using revalue() и mapvalues() из plyr

library(plyr); library(dplyr)
ESS1$impfun3 <- revalue(ESS1$impfun, c("Very much like me" = 3,
"Like me" = 3, "Somewhat like me" = 2, "A little like me" = 2, "Not like me" = 1, 
"Not like me at all" = 1))
table(ESS1$impfun, ESS1$impfun3)
##                     
##                          3     2     1
##   Very much like me   6303     0     0
##   Like me            13650     0     0
##   Somewhat like me       0 12619     0
##   A little like me       0  9198     0
##   Not like me            0     0  6570
##   Not like me at all     0     0  2791
ESS1$impfun3 <- mapvalues(ESS1$impfun, from = c("Very much like me", "Like me", "Somewhat like me", "A little like me", "Not like me", "Not like me at all"), to = c("3", "3", "2", "2", "1", "1"))
table(ESS1$impfun, ESS1$impfun3)
##                     
##                          3     2     1
##   Very much like me   6303     0     0
##   Like me            13650     0     0
##   Somewhat like me       0 12619     0
##   A little like me       0  9198     0
##   Not like me            0     0  6570
##   Not like me at all     0     0  2791

For more recoding stuff go here:

Subsetting

Using []

ESS1sub <- ESS1[which(ESS1$icmnact=="In paid work"),]
dim(ESS1sub)
## [1] 24049    16
summary(ESS1sub$icmnact)
## In paid work      Retired   All others 
##        24049            0            0

Using subset()

ESS1sub <- subset(ESS1, subset=(icmnact=="In paid work"))
dim(ESS1sub)
## [1] 24049    16

Using pipes (from magrittr) and filter() (from dplyr)

ESS1sub <- ESS1 %>% filter(icmnact=="In paid work")
dim(ESS1sub)
## [1] 24049    16