library(car)
library(reshape2)
str(mtcars)
> str(mtcars)
'data.frame': 32 obs. of 11 variables:
$ mpg : num 21 21 22.8 21.4 18.7 18.1 14.3 24.4 22.8 19.2 ...
$ cyl : num 6 6 4 6 8 6 8 4 4 6 ...
$ disp: num 160 160 108 258 360 ...
$ hp : num 110 110 93 110 175 105 245 62 95 123 ...
$ drat: num 3.9 3.9 3.85 3.08 3.15 2.76 3.21 3.69 3.92 3.92 ...
$ wt : num 2.62 2.88 2.32 3.21 3.44 ...
$ qsec: num 16.5 17 18.6 19.4 17 ...
$ vs : num 0 0 1 1 0 1 0 1 1 1 ...
$ am : num 1 1 1 0 0 0 0 0 0 0 ...
$ gear: num 4 4 4 3 3 3 3 4 4 4 ...
$ carb: num 4 4 1 1 2 1 4 2 2 4 ...
mtcarMelt=melt(mtcars,id.vars=c("cyl","gear"),variable.name = 'carvariable',value.name = 'carvalue')
tail(mtcarMelt)
>tail(mtcarMelt)
cyl gear carvariable carvalue
283 4 5 carb 2
284 4 5 carb 2
285 8 5 carb 4
286 6 5 carb 6
287 8 5 carb 8
288 4 4 carb 2
mtcarsCast=dcast(mtcarsMelt,cyl+gear~variable,fun.aggregate =mean)
head(mtcarsCast)
cyl gear mpg disp hp drat wt qsec vs am carb
1 4 3 21.500 120.100 97.0 3.70 2.465000 20.0100 1.0 0.00 1.0
2 4 4 26.925 102.625 76.0 4.11 2.378125 19.6125 1.0 0.75 1.5
3 4 5 28.200 107.700 102.0 4.10 1.826500 16.8000 0.5 1.00 2.0
4 6 3 19.750 241.500 107.5 2.92 3.337500 19.8300 1.0 0.00 1.0
5 6 4 19.750 163.800 116.5 3.91 3.093750 17.6700 0.5 0.50 4.0
6 6 5 19.700 145.000 175.0 3.62 2.770000 15.5000 0.0 1.00 6.0
head(mtcars)
> head(mtcars)
mpg cyl disp hp drat wt qsec vs am gear carb
Mazda RX4 21.0 6 160 110 3.90 2.620 16.46 0 1 4 4
Mazda RX4 Wag 21.0 6 160 110 3.90 2.875 17.02 0 1 4 4
Datsun 710 22.8 4 108 93 3.85 2.320 18.61 1 1 4 1
Hornet 4 Drive 21.4 6 258 110 3.08 3.215 19.44 1 0 3 1
Hornet Sportabout 18.7 8 360 175 3.15 3.440 17.02 0 0 3 2
Valiant 18.1 6 225 105 2.76 3.460 20.22 1 0 3 1
StuId <- c(1:10)
StuName <- c('John Davis','Angela Williams','Bull >Jones','Cheryl Cushing','Reuven Ytzrhak','Joel Knox','Mary Rayburn','Greg England','Brad Tmac','Tracy Mcgrady')
Math <- c(502,465,621,575,454,634,576,421,599,666)
Science <- c(95,67,78,66,96,89,78,56,68,10)
English <- c(25,12,22,18,15,30,37,12,22,38)
mydata <- data.frame(StuId,StuName,Math,Science,English)
mydata
> mydata
StuId StuName Math Science English
1 1 John Davis 502 95 25
2 2 Angela Williams 465 67 12
3 3 Bull >Jones 621 78 22
4 4 Cheryl Cushing 575 66 18
5 5 Reuven Ytzrhak 454 96 15
6 6 Joel Knox 634 89 30
7 7 Mary Rayburn 576 78 37
8 8 Greg England 421 56 12
9 9 Brad Tmac 599 68 22
10 10 Tracy Mcgrady 666 10 38
> scale(mydata[,3:5], center=T,scale=T)
Math Science English
[1,] -0.5817963 0.98895866 0.2006619
[2,] -1.0184385 -0.13212808 -1.1722882
[3,] 0.8225395 0.30829885 -0.1161727
[4,] 0.2796870 -0.17216689 -0.5386189
[5,] -1.1482510 1.02899747 -0.8554535
[6,] 0.9759544 0.74872578 0.7287197
[7,] 0.2914882 0.30829885 1.4680005
[8,] -1.5376887 -0.57255501 -1.1722882
[9,] 0.5629144 -0.09208927 -0.1161727
[10,] 1.3535909 -2.41434036 1.5736120
attr(,"scaled:center")
Math Science English
551.3 70.3 23.1
attr(,"scaled:scale")
Math Science English
84.737569 24.975766 9.468662
> mydata$score <- apply(z,1,mean)
> mydata
StuId StuName Math Science English score
1 1 John Davis 502 95 25 0.2026081
2 2 Angela Williams 465 67 12 -0.7742849
3 3 Bull >Jones 621 78 22 0.3382219
4 4 Cheryl Cushing 575 66 18 -0.1436996
5 5 Reuven Ytzrhak 454 96 15 -0.3249024
6 6 Joel Knox 634 89 30 0.8177999
7 7 Mary Rayburn 576 78 37 0.6892625
8 8 Greg England 421 56 12 -1.0941773
9 9 Brad Tmac 599 68 22 0.1182175
10 10 Tracy Mcgrady 666 10 38 0.1709542
StuId <- c(1:10)
StuName <- c('John Davis','Angela Williams','Bull Jones','Cheryl Cushing','Reuven Ytzrhak','Joel Knox','Mary Rayburn','Greg England','Brad Tmac','Tracy Mcgrady')
Math <- c(502,465,621,575,454,634,576,421,599,666)
Science <- c(95,67,78,66,96,89,78,56,68,10)
English <- c(25,12,22,18,15,30,37,12,22,38)
mydata <- data.frame(StuId,StuName,Math,Science,English)
mydata
library(dplyr)
z=scale(mydata[,3:5], center=T,scale=T)
mydata$score <- apply(z,1,mean)
mydata
q<-quantile(mydata$score,c(.8,.6,.4,.2))
q
attach(mydata)
mydata$level[score>=q[1]] <- "A"
mydata$level[score>=q[2] & score<q[1]] <- "B"
mydata$level[score>=q[3] & score<q[2]] <- "C"
mydata$level[score>=q[4] & score<q[3]] <- "D"
mydata$level[score<q[4]] <- "E"
name<-strsplit(StuName,split=" ")
name
name<-unlist(strsplit(StuName,split=" "))
name
name<-matrix(name,ncol=2,byrow=T)
name
FirName<-name[,1]
LasName<-name[,2]
mydata<-cbind(mydata,FirName,LasName)
name<-strsplit((StuName)," ")
lastname<-sapply(name,"[",2)
lastname
firstname<-sapply(name,"[",1)
firstname
mydata<-cbind(mydata,FirName,LasName)
mydata
options(digits=2)
mydata<-mydata[order(mydata$LasName,mydata$FirName),]
mydata