[R] From SPSS Syntax to R code

Sascha Vieweg saschaview at gmail.com
Sun Feb 13 10:23:05 CET 2011


On 11-02-12 05:08, beky wrote:

> There is a code from SPSS Syntax
>
> do if sub(ATVK,2,2)="01".
> comp strata=1.
> else if sub(ATVK,2,2)>="05" and sub(ATVK,2,2)<="27".
> comp strata=3.
> else if sub(ATVK,4,2)>"20" or sub(ATVK,6,2)>"20".
> comp strata=4.

Note that your first statement is overwritten by the one below.

> else if sub(ATVK,4,2)>"00".
> comp strata=2.
> end if.
>
> value labels strata 1 "R 2 "Li" 3 "M" 4 "La".
>
> How can i rewrite it in R code?

# guessing your data
ATVK <- paste(
   sample(LETTERS, 100, repl=T),
   sample(sprintf("%02d", 0:30), 100, repl=T),
   sample(sprintf("%02d", 0:30), 100, repl=T),
   sample(sprintf("%02d", 0:30), 100, repl=T),
   sample(letters, 100, repl=T),
   sep=""
)
strata <- factor(rep(NA, 100), levels=c("R", "Li", "M", "La"))
# making the "as.nimeric(stubstr(...))" convenient
atsub2 <- as.numeric(substr(ATVK, 2, 3))
atsub4 <- as.numeric(substr(ATVK, 4, 5))
atsub6 <- as.numeric(substr(ATVK, 6, 7))
# didn't find a one-liner, however, this should work
strata[atsub2==1] <- "R"
strata[atsub2>=5 | atsub2<=27] <- "M"
# change statements to prevent overwriting
strata[atsub4>0] <- "Li"
strata[atsub4>20 | atsub6>20] <- "La"
summary(strata)

HTH, *S*

-- 
Sascha Vieweg, saschaview at gmail.com



More information about the R-help mailing list