练习:数据整理,R

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


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值