# NOT RUN {
# construct data frame
mydata <- read.table(text="Status Severity
1 Mild
4 Moderate
3 Moderate
2 Mild
1 Severe", header=TRUE)
# replace Status with a transformed version
mydata <- Transform(Status=Status-1)
# abbreviated form
mydata <- trans(StatusNew=Status-1)
# replace Status with a transformed version
# leave input mydata unmodified
# save transformed data frame to the created data frame called newdata
newdata <- Transform(Status=Status-1)
# construct data frame
# recode Status into a factor
mydata <- Transform(Status=factor(Status, labels=c("OK","Hurts","Painful","Yikes")))
# read lessR data set dataEmployee into data frame mydata
mydata <- Read("Employee", in.lessR=TRUE)
# multiple transformations in one statement
# Months is a new variable
# Salary is a new version of the old Salary
# JobSat was read as non-numeric, so as a factor, but is also ordinal
# Plan was read as numeric values 0,1,2, now converted to a factor
mydata <- Transform(
Months=Years*12,
Salary=Salary/1000,
Plan=factor(Plan,
levels=c(0,1,2), labels=c("GoodHealth", "YellowCross", "BestCare"))
)
# new variable Months now exists
# if relevant, supply a corresponding variable label
# mydata <- label(Months, "Months Employed in the Company")
# confirm
db()
# ----------------------------
# transformations with factors
# ----------------------------
# transform a nominal variable to ordinal, re-order the categories
mydata <- Transform(JobSat=
factor(JobSat, levels=c("low", "med", "high"), ordered=TRUE))
# recode levels of a factor that should remain a factor
# with the Transform and factor functions
# using Recode destroys the factor attribute, converting to
# character strings instead, so Recode does not allow
mydata <- Read("Employee", in.lessR=TRUE)
mydata <- Transform(
Gender=factor(Gender, levels=c("F", "M"), labels=c("Female", "Male"))
)
# recode levels of a factor to convert to integer first by
# converting to integer with Transform and as.numeric
# here Gender has values M and F in the data
# integers start with 1 through the number of levels, can use
# Recode to change this if desired, such as to 0 and 1
# Gender is now a factor to illustrate
mydata <- Transform(Gender=as.numeric(Gender))
mydata <- Recode(Gender, old=c(1,2), new=c(0,1))
# recode integer values to levels of a factor with value labels
# with the Transform function instead of Recode
# here Gender has values 0 and 1 in the data
mydata <- Read("Mach4", in.lessR=TRUE)
mydata <- Transform(
Gender=factor(Gender, levels=c(0,1), labels=c("Male","Female"))
)
# ----------------------------
# }
Run the code above in your browser using DataLab