R語(yǔ)言-v1-基礎(chǔ)知識(shí)

R語(yǔ)言-v1-基礎(chǔ)知識(shí)

Iretara?12-17 21:18

以例題的形式簡(jiǎn)述R語(yǔ)言基礎(chǔ)知識(shí)

# 讀取文件

setwd("文件鏈接的時(shí)候,用?/?")

install.packages("readxl")

library(readxl)

library(tidyverse)

hw1_a<-read_excel("hw1_a.xlsx",col_types=c("numeric", "numeric", "numeric", "numeric", "numeric"))

hw1_b<-read_excel("hw1_b.xlsx")

#讀取csv

library(readr)

hw1_a<-read_csv("/")

View(hw1_a)

# 描述型函數(shù)

hw1_a + hw1_b 表

#描述最小值,最大值,中值,均值,標(biāo)準(zhǔn)差

Str(hw1_a)#查看數(shù)據(jù)并指出各個(gè)變量的形式

summary(hw1_a)#指出各個(gè)變量的形式,最小值,最大值,中值,均值

library(psych)

describe(hw1_a)#比summary更簡(jiǎn)便的方法,可以直接讀取標(biāo)準(zhǔn)差等;但是,使用describe不可讀取 NA值, 可以嘗試使用 Hmisc包中 describe

描述型函數(shù)-R

# 連接

hw1_a %>%inner_join(hw1_b,by="ID")

hw1_a %>%left_join(hw1_b,by="ID")

hw1_a %>%right_join(hw1_b,by="ID")

hw1_a %>%full_join(hw1_b,by="ID")

inner_join<-inner_join(hw1_a,hw1_b,by=“ID”)#報(bào)告合并后的總行數(shù),178行

full_join<-full_join(hw1_a,hw1_b,by="ID")

(nrow(full_join))#報(bào)告合并后的總行數(shù),200行

>?length(full_join$ID)

#找出各個(gè)列的缺失值

i<-NA

a<-NA

for(i in 1:length(full_join[1,])){ a[i]<-sum(is.na(full_join[,i]))}

paste("缺失值是",a)

#缺失值總數(shù)

sum(is.na(full_join))

#刪除缺失值na.omit()

full_join1=filter(full_join,!is.na(full_join[2]))

full_join1=filter(full_join1,!is.na(full_join1[3]))

full_join1=filter(full_join1,!is.na(full_join1[4]))

full_join1=filter(full_join1,!is.na(full_join1[5]))

full_join1=filter(full_join1,!is.na(full_join1[6]))

full_join1=filter(full_join1,!is.na(full_join1[7]))

full_join1=filter(full_join1,!is.na(full_join1[8]))

sum(is.na(full_join1))

找出Income中的極端值并濾掉對(duì)應(yīng)行的數(shù)據(jù)

quantile(hw1_a$Income,c(0.025,0.975))

hw1_a2=filter(hw1_a,Income>14168.81&Income<173030.92)

#使用dplyr進(jìn)行數(shù)據(jù)轉(zhuǎn)換

arrange()

>arrange(hw1_a,Income)#默認(rèn)升序

>arrange(hw1_a,desc(Income))#desc降序,NA排序一般最后

select()

>select(hw1_a,-(Years_at_Address:Income))#不要變量

>rename(hw1_a, In_come=Income)#改名

>select(hw1_a,Income,exerything())#把Income放在前面

拓例題1:

library(nycflights13)

view(flights)

#counts

(1)

not_cancelled <- flights %>%

filter(! is.na(dep_delay), !is.na(arr_delay))

(2)

not_cancelled %>%

group_by(year,month,day) %>%

summarize(mean=mean(dep_delay))

(3)

delays <- not_cancelled %>%

group_by(tailnum) %>%

summarize(delay=mean(arr_delay))

ggplot(data=delays,mapping=aes(x= delay))+

geom_freqpoly(binwidth=10) #freqpoly

(4)

delays <- not_cancelled %>%

group_by(tailnum) %>%

summarize(delay=mean(arr_delay,na.rm=TRUE),n=n()) #tailnum的次數(shù)

ggplot(data=delays,mapping=aes(x= n, y=delay))+

geom_point(alpha=1/10)

拓例題2:

#請(qǐng)按照價(jià)格的均值,產(chǎn)生新的變量price_new, 低于均值為“低價(jià)格”,高于均值為“高價(jià)格”。 同樣對(duì)市場(chǎng)份額也是,產(chǎn)生變量marketshare_new, 數(shù)值為“低市場(chǎng)份額”和“高市場(chǎng)份額”

price=data1$price

pricebar=mean(price)

price_new=ifelse(price>pricebar,“高價(jià)格”,”低價(jià)格”)

marketshare=data1$marketshare

marketsharebar=mean(marketshare)

marketshare_new=ifelse(marketshare>marketsharebar ,“高市場(chǎng)份額”,”低市場(chǎng)份額”)

data1=mutate(data1,price_new,marketshare_new)

#可視化

#將Income對(duì)數(shù)化

lninc<-log(hw1_a$Income)

#畫出直方圖和density curve密度曲線

hist(lninc,prob=T)

lines(density(lninc),col="blue")

#添加額外變量的辦法,在aes()中添加樣式 (color、size、alpha、shape)

ggplot(data=inner_join)+

geom_point(mapping = aes(x=Years_at_Employer,y= Income,alpha=Is_Default))

#按照Is_Default增加一個(gè)維度,使用明暗程度作為區(qū)分方式

ggplot(data=inner_join)+

geom_point(mapping = aes(x=Years_at_Employer,y= Income,

alpha=factor(Is_Default)))

#使用形狀作為另外一種區(qū)分方式

ggplot(data=inner_join)+

geom_point(mapping = aes(x=Years_at_Employer,y= Income,

shape=factor(Is_Default)))

可視化-R

?

?

拓展:

#將 flight1 表和 weather1 表根據(jù)共同變量進(jìn)行內(nèi)連接,隨機(jī)抽取 100000 行數(shù)據(jù), 將生產(chǎn)的結(jié)果保存為 flight_weather。 (提示:sample_n()函數(shù),不用重復(fù)抽取)

flight_weather <- inner_join(flight1, weather1) %>%?sample_n(100000)

#從 flight_weather表中對(duì)三個(gè)出發(fā)機(jī)場(chǎng)按照平均出發(fā)延誤時(shí)間排降序,并將結(jié)果保留在 longest_delay表中。把結(jié)果展示出來

longest_delay<- flight_weather %>%

group_by(origin) %>%

summarize(delay=mean(dep_delay,na.rm=TRUE)) %>%

arrange(desc(delay))

#根據(jù)不同出發(fā)地(origin)在平行的 3 個(gè)圖中畫出風(fēng)速 wind_speed(x 軸)和出發(fā) 延誤時(shí)間 dep_delay(y 軸)的散點(diǎn)圖。

ggplot(data= flight_weather) +

geom_point(mapping=aes(x=wind_speed,y=dep_delay))+

facet_grid(.~origin,nrow?= 3)?#按照class分類,分成3行

#根據(jù) flight_weather表,畫出每個(gè)月航班數(shù)的直方分布圖,x 軸為月份,y 軸是每個(gè) 月份航班數(shù)所占的比例。

ggplot(data=flight_weather)+

geom_bar(mapping=aes(x=month,y=..prop..,group=1))

#根據(jù) flight_weather表,畫出每個(gè)月航班距離的 boxplot 圖,x 軸為月份,y 軸為 航行距離, 根據(jù)的航行距離的中位數(shù)從低到高對(duì) x 軸的月份進(jìn)行重新排序

ggplot(data=flight_weather)+

geom_boxplot(mapping=aes(x=reorder(month,distance,FUN=median),y=distance))

線性回歸

#以Income作為因變量,Years at Employer作為自變量,進(jìn)行OLS回歸

m1<-lm(Income~Years_at_Employer,data=hw1_a)

#通過***判斷顯著性

summary(m1)

#畫出擬合直線

ggplot(data= hw1_a)+

geom_point(aes(x=Income,y=Years_at_Employer))+

geom_abline(data= m1,col= "blue")

#證明擬合直線是最優(yōu)的

b0=runif(20000,-5,5)

b1=runif(20000,-5,5)

d<-NA

sum<-NA

n<-1

while(n<=20000){

for(i in 1:24){

d[i]<-(hw1_a $ Income[i]-b0[n]-b1[n]*hw2$ Years_at_Employer[i])^2}

sum[n]<-sum(d)

n<-n+1

}

resi=m1$residuals

resi2=sum(resi^2)

check=sum(as.numeric(sum<resi2))

check

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容