R--高級數(shù)據(jù)管理

數(shù)學(xué)函數(shù)

#round(x,digits=n)小數(shù)位數(shù),signif(x,digits=n)有效數(shù)字位數(shù),trunc()直接去除小數(shù)
#log(x,base=n)對x取以n為底的對數(shù)

#統(tǒng)計(jì)函數(shù)
#sd(x)標(biāo)準(zhǔn)差呆馁,range(x)求值域染苛,diff(x,lag=n)求滯后差分鹊漠,
#scale(x,center=TRUE,scale=TRUE)對數(shù)據(jù)對象x進(jìn)行中心化或者標(biāo)準(zhǔn)化
#進(jìn)行任意均值和方差的標(biāo)準(zhǔn)化
#對矩陣或者數(shù)據(jù)框
newdata <- scale(mydata)
newdata <- scale(mydata)*SD+M
#SD標(biāo)準(zhǔn)差主到,M均值
#對某一列進(jìn)行標(biāo)準(zhǔn)化
newdata <- transform(mydata,myvar=scale(myvar)*10+50)

x <- c(1,2,3,4,5,6,7,8)
mean(x)
sd(x)

n <- length(x)
meanx <- sum(x)/n
css <- sum((x-meanx)^2)
sdx <- sqrt(css/(n-1))
meanx
sdx```

#概率函數(shù)

生成-3到3的31個(gè)值的序列

x <- pretty(c(-3,3),30)

密度函數(shù)d的正態(tài)分布norm

y <- dnorm(x)

yaxs表示y軸的畫軸方法,i表示刻度線都在數(shù)據(jù)范圍內(nèi)部

plot(x,y,type="l",xlab="NormalDeviate",ylab = "Density",yaxs="i")

通過指定隨機(jī)數(shù)種子躯概,可以再現(xiàn)以前的結(jié)果

set.seed(1234)

runif()函數(shù)生成0到1之間的均勻分布的隨機(jī)數(shù)

runif(5)

生成多元正態(tài)數(shù)據(jù)

library(MASS)
options(digits = 3)

設(shè)置隨機(jī)數(shù)種子登钥,以便再現(xiàn)結(jié)果

set.seed(1234)

指定均值向量

mean <- c(230.7,146.7,3.6)

指定方差-協(xié)方差矩陣(相關(guān)矩陣)

sigma <- matrix(c(15360.8,6721.2,-47.1,6721.2,4700.9,-16.5,
-47.1,-16.5,0.3),nrow=3,ncol=3)

mvrnorm produces one or more samples from the specified multivariate normal distribution

500是想要的樣本大小,返回結(jié)果是一個(gè)矩陣

mydata <- mvrnorm(500,mean,sigma)

轉(zhuǎn)化成數(shù)據(jù)框

mydata <- as.data.frame(mydata)
names(mydata) <- c("y","x1","x2")
dim(mydata)
head(mydata,n=10)```

字符處理函數(shù)

#paste()連接字符串,分隔符為seq
paste("x",1:3,"a",sep = "_")
#rep(x,n)將x重復(fù)n次,將1:3這個(gè)向量重復(fù)兩次
y <- rep(1:3,2)
#將選取n+1個(gè)等間距的整數(shù)值娶靡,將一個(gè)連續(xù)型變量x分隔成n個(gè)區(qū)間,畫圖常用
pretty(c(-3,3),30)

#將函數(shù)應(yīng)用于矩陣和數(shù)據(jù)框
a <- 5
sqrt(a)
b <- c(1.243,5.345,2.99)
round(b)
c <- matrix(runif(12),nrow=4)
c
log(c,base = 2)
mean(c)

#apply()函數(shù)牧牢,可以將任意函數(shù)應(yīng)用到矩陣,數(shù)組姿锭,數(shù)據(jù)框的任何維度上
#apply(x,MARGIN,FUN),MARGIN=1表示行塔鳍,MARGIN=2表示列
apply(c,1,mean)
#按列計(jì)算均值
apply(c,2,mean)
#計(jì)算截尾均值,基于中間20%的數(shù)據(jù)呻此,最高和最低的40%將被忽略
apply(c,2,mean,trim=0.4)```

#處理學(xué)生成績

包括成績變量的標(biāo)準(zhǔn)化轮纫,給出評分,名字排序

options(digits = 2)
Student <- c("John Davis","Angela Williams","Bullwinkle Moose","Kevin Du","Janice MarkHammer",
"Cheryl Cushing","Reuven Ytzrhak","Greg Knox","Joel England","Mary Rayburn")
Math <- c(502,600,412,634,495,512,410,625,573,522)
Science <- c(95,99,80,98,75,85,80,95,89,86)
English <- c(25,22,18,26,28,15,30,27,18,15)
roster <- data.frame(Student,Math,Science,English,stringsAsFactors = FALSE)

scale進(jìn)行數(shù)據(jù)的標(biāo)準(zhǔn)化焚鲜,針對每一列

z <- scale(roster[,2:4])

對每一行求平均值

score <- apply(z,1,mean)

然后將score列和roster合并,橫向合并掌唾,添加列

roster <- cbind(roster,score)

計(jì)算分位數(shù),0.8等作為分位點(diǎn)

y <- quantile(score,c(0.8,0.6,0.4,0.2))

建立新變量,score >= y[1]將返回一個(gè)logical向量,變量的重編碼

roster$grade[score >= y[1]] <- "A"
roster$grade[score < y[1] & score >= y[2]] <- "B"
roster$grade[score < y[2] & score >= y[3]] <- "C"
roster$grade[score < y[3] & score >= y[4]] <- "D"
roster$grade[score < y[4]] <- "F"

開始處理學(xué)生姓名

strsplit函數(shù)分割字符向量x中的元素,返回一個(gè)列表忿磅,有10個(gè)成分糯彬,每個(gè)有兩項(xiàng)

name <- strsplit((roster$Student)," ")

"["也是個(gè)函數(shù),"["(x,2)表示提取x向量中的第二個(gè)元素

lastname <- sapply(name,"[",2)
firstname <- sapply(name,"[",1)

roster[,-1]表示去除第一列

roster <- cbind(firstname,lastname,roster[,-1])

order返回一個(gè)排序后的行索引值向量

roster <- roster[order(firstname,lastname),]

roster <- roster[order(-score),]```

程序控制結(jié)構(gòu)

for(i in 1:10) print("hello world")
i<-10
while(i>0){print("hello");i<-i-1}
grade <- "love"
if(!is.factor(grade)) grade<-as.factor(grade) else print("grade is already a factor")
#ifelse結(jié)構(gòu)
score<-4
ifelse(score>2,print("passed"),print("failed"))
outcome <- ifelse(score > 2,"passed","failed")
#switch結(jié)構(gòu)
#根據(jù)i的值葱她,選擇后面執(zhí)行哪條語句
fellings <- c("sad","afraid")
for(i in fellings)
  print(
    switch(i,
           happy="i am glad you are happy",
           afraid="there is nothing to fear",
           sad="cheer up",
           angry="calm down now")
  )```

#函數(shù)

mystats <- function(x,parametric=TRUE,print=FALSE){
if(parametric){
#參數(shù)統(tǒng)計(jì)量撩扒,均值和標(biāo)準(zhǔn)差
center <- mean(x);
spread <- sd(x);
}else{
#非參數(shù)統(tǒng)計(jì)量,中位數(shù)和絕對中位差
center <- median(x);
spread <- mad(x);
}
if(print & parametric){
cat("Mean=",center,"\n","SD=",spread,"\n")
}else if(print & !parametric){
cat("Median=",center,"\n","MAD=",spread,"\n")
}

生成一個(gè)列表吨些,name1=object1

result <- list(center=center,spread=spread)
return(result)
}
set.seed(1234)

Density,distribution function,quantile(分位數(shù))function and random generation for the normal

distribution with mean equal to mean and standard deviation equal to sd.

x<-rnorm(500)
y <- mystats(x)

返回的y是一個(gè)列表

y$center;y$spread;y[1];y[2]
y <- mystats(x,parametric = TRUE,print = TRUE)
y```

一個(gè)switch函數(shù)

mydate <- function(type="long"){
  switch(type,
         #%A是非縮寫星期名却舀,%B非縮寫月份
         long = format(Sys.Date(),"%A %B %d %Y"),
         short = format(Sys.Date(),"%Y-%m-%d"),
         cat(type,"is not a recognized type\n")
  )
}

mydate("long")
mydate("short")
mydate("middle")```

#轉(zhuǎn)置矩陣

cars <- mtcars(1:5,1:4)
t(cars)```

整合數(shù)據(jù)

options(digits = 3)
attach(mtcars)
#將數(shù)據(jù)折疊(整合),by中的變量必須在list中锤灿,哪怕只有一個(gè)變量挽拔,函數(shù)可以使用自定義函數(shù)
aggdata <- aggregate(mtcars,by=list(Group.cyl=cyl,Group.gear=gear),FUN = mean,na.rm=TRUE)
aggdata
detach(mtcars)```
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市但校,隨后出現(xiàn)的幾起案子螃诅,更是在濱河造成了極大的恐慌,老刑警劉巖状囱,帶你破解...
    沈念sama閱讀 221,888評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件术裸,死亡現(xiàn)場離奇詭異,居然都是意外死亡亭枷,警方通過查閱死者的電腦和手機(jī)袭艺,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,677評論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來叨粘,“玉大人猾编,你說我怎么就攤上這事瘤睹。” “怎么了答倡?”我有些...
    開封第一講書人閱讀 168,386評論 0 360
  • 文/不壞的土叔 我叫張陵轰传,是天一觀的道長。 經(jīng)常有香客問我瘪撇,道長获茬,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,726評論 1 297
  • 正文 為了忘掉前任倔既,我火速辦了婚禮恕曲,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘渤涌。我一直安慰自己佩谣,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,729評論 6 397
  • 文/花漫 我一把揭開白布歼捏。 她就那樣靜靜地躺著,像睡著了一般笨篷。 火紅的嫁衣襯著肌膚如雪瞳秽。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,337評論 1 310
  • 那天率翅,我揣著相機(jī)與錄音练俐,去河邊找鬼。 笑死冕臭,一個(gè)胖子當(dāng)著我的面吹牛腺晾,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播辜贵,決...
    沈念sama閱讀 40,902評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼悯蝉,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了托慨?” 一聲冷哼從身側(cè)響起鼻由,我...
    開封第一講書人閱讀 39,807評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎厚棵,沒想到半個(gè)月后蕉世,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,349評論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡婆硬,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,439評論 3 340
  • 正文 我和宋清朗相戀三年狠轻,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片彬犯。...
    茶點(diǎn)故事閱讀 40,567評論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡向楼,死狀恐怖查吊,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情蜜自,我是刑警寧澤菩貌,帶...
    沈念sama閱讀 36,242評論 5 350
  • 正文 年R本政府宣布,位于F島的核電站重荠,受9級特大地震影響箭阶,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜戈鲁,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,933評論 3 334
  • 文/蒙蒙 一仇参、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧婆殿,春花似錦诈乒、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,420評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至消约,卻和暖如春肠鲫,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背或粮。 一陣腳步聲響...
    開封第一講書人閱讀 33,531評論 1 272
  • 我被黑心中介騙來泰國打工导饲, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人氯材。 一個(gè)月前我還...
    沈念sama閱讀 48,995評論 3 377
  • 正文 我出身青樓渣锦,卻偏偏與公主長得像,于是被迫代替她去往敵國和親氢哮。 傳聞我的和親對象是個(gè)殘疾皇子袋毙,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,585評論 2 359

推薦閱讀更多精彩內(nèi)容