2、矩阵是一个二维数组,每个元素都拥有相同的模式,可通过函数matrix()创建矩阵。
3、数组是一个可以在两个以上维度存储数据的数据对象。例如,如果创建尺寸(2,3,4)的数组,那么就是创建4个矩形矩阵每个2行3列。数组只能存储数据类型。
4、矩阵和数组一样都只能包含一种数据类型,当有多种模式的数据时,使用数据框就更为方便。数据框可以用函数data.frame () 创建。
5、$ 被用来选取一个给定数据框中的某个特定变量。
6、attach()绑定数据集,detach()解除数据集。
7、with:attach,detach最好在单独的数据框内使用,在多个同名对象最好不要使用,函数with(),可以再具有多个同名对象的数据框内使用,但是必须加入花括号{},这样就无须担心名称冲突了,但是它也有局限性,赋值仅在此函数的括号内生效。
8、列表是一些对象的有序集合。
9,、数据导入 read.table(),其中header = T,代表第一行为变量名称,不作为数据,header = F相反。sep代表数据分隔符,txt为"\t",csv为","。
10、table函数,用 table() 函数统计因子各水平的出现次数(称为频数或频率)。
>sex = c("女","女","女","男","男")
>table(sex)
>sex
男 女
2 3
求众数
>aim = table(sex)[table(sex)==max(table(sex))]
>aim
女
3
> max(table(sex))
[1] 3
> table(sex)==max(table(sex))
sex
男 女
FALSE TRUE
11、 无尺度网络: 是指在某一复杂的 系统 中,大部分节点只有少数几个连结,而某些节点却拥有与其他节点的大量连结。这些具有大量连结的节点称为“集散节点”,所拥有的连结可能高达数百、数千甚至数百万。这一特性说明该网络是无尺度的,因此,凡具有这一特性的网络都是无尺度网络。
12、options(stringsAsFactors = F)
#在调用as.data.frame的时,将stringsAsFactors设置为FALSE可以避免character类型自动转化为factor类型。
13、class():查看数据结构:vector、matrix、array、dataframe、list。
14、str():作用用英语来表示是:check classification of viriables,一般用于检查数据框当中有哪些数据。
15、mode() :查看数据元素类型。
16、typeof() :查看数据元素类型,基本等同于mode(),比mode()更为详细。
17、example():假设有一个函数foo,example("foo"),函数foo的使用示例。
18、apropos():列出名称中含有foo的所有可用函数。apropos("foo",mode="function")。
19、data():列出当前已加载包中所含的所有可用示例数据集。
20、ls():列出当前工作空间中的对象。
21、rm():移除(删除)一个或多个对象。
22、history(#):显示最近使用过的#个命令(默认值为25)。
23、options():显示或设置当前选项。有一个收藏文件有介绍options的功能。
24、boxplot():生成盒型图。
25、sum():计算和。sum(x,na.rm = TRUE)。
26、median():计算中位数。
27、cbind():以列结合变量。cbind(x,y,z)。
28、rbind():以行结合变量。
29、vector():以向量形式结合数据。vector(length = 10)。
30、rep():以矩阵形式结合数据。rep(c(1,,2,3),each = 10)
31、seq():生成一个有序的数列。seq(1,10)。
32、dim():矩阵或者cbind输出的维数。dim(Mydata)。
33、scan():从ascii文件中读取数据。scan(file = "test.txt")。
34、write.table():把一个变量写入到ascii文件。write.table(Z,file = "test.txt")。
35、order():确定数据的顺序。order(x)。
36、merge():合并两个数据框。merge(x,y,by = "ID")。
37、str():显示一个对象的内部结构。str(Mydata)。
38、factor():定义变量作为因子。factor(x)。
39、tapply():tapply(X = Veg$R,INDEX = Veg$Transect,FUN = mean).tapply函数根据第二个变量(Transect)的不同水平对第一变量(R)进行了求平均值运算。还可以求sd,var,length等操作。R语言初学者指南P75详细介绍了这个函数。
40、下一页介绍了sapply和lapply。
41、summary():计算基本信息。
42、table():计算列联表,统计因子各水平的出现次数(频数或频率)。table(x,y)。
43、plot():y对x的图形。pch形状,col颜色。
44、par():par(mfrow = c(2,2),mar = c(3,3,2,1))
mfrow生成一个具有4个面板的图形窗口。mar选项指定每个图形周围空白的大小,底部、左侧、顶部、右侧。
45、paste():将变量连接成字符串。paste("a","b",sep = "")。
46、log(): log = "x",log = "y",log = "xy",生成对数轴。
47、%in%:
a<-c(1,3,13,1443,43,43,4,34,3,4,3)
b<-c(1,13,11,1313,434,1)
a%in%b
# 返回内容#
[1] TRUE FALSE TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
# 取反操作
!(a%in%b)
48、sort()函数是对向量进行从小到大的排序
rank()函数返回的是对向量中每个数值对应的秩
order()函数返回的值表示位置,依次对应的是向量的最小值、次小值、第三小值……最大值等(位置索引)
arrange()函数(需加载dplyr包)针对数据框,返回基于某列排序后的数据框,方便多重依据排序。
49、subset(): df <- data.frame( a = 1:10, b = 2:11, c = 3:12 )
df <- subset(df, select = c(a,c)) #选取列a和c
df <- subset(df, select = -c(a,c) ) #去除列a和c
R语言-v1-基础知识
Iretara 12-17 21:18
以例题的形式简述R语言基础知识
# 读取文件
setwd(" 文件链接的时候,用 / ")
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)
# 描述型函数
hw1_a + hw1_b 表
#描述最小值,最大值,中值,均值,标准差
Str (hw1_a) #查看数据并指出各个 变量的形式
summary (hw1_a) #指出各个变量的形式, 最小值,最大值,中值,均值
library(psych)
describe (hw1_a) #比summary更简便的方法, 可以直接读取标准差等;但是,使用describe不可读取 NA值, 可以尝试使用 Hmisc包中 describe
描述型函数-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”) #报告合并后的 总行数 ,178行
full_join<- full_join (hw1_a,hw1_b, by ="ID")
( nrow (full_join)) #报告合并后的 总行数 ,200行
> length (full_join$ID)
#找出各个列的 缺失值
i<-NA
a<-NA
for(i in 1:length(full_join[1,])){ a[i]<- sum(is.na( full_join[,i] ) ) }
paste("缺失值是",a)
#缺失值总数
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中的 极端值 并滤掉对应行的数据
quantile (hw1_a$Income,c(0.025,0.975))
hw1_a2= filter (hw1_a,Income>14168.81 &Income<173030.92)
#使用dplyr进行数据转换
arrange()
>arrange (hw1_a,Income) #默认升序
>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的次数
ggplot(data=delays,mapping=aes(x= n, y=delay))+
geom_point(alpha=1/10)
拓例题2:
#请按照价格的均值,产生新的变量price_new, 低于均值为“低价格”,高于均值为“高价格”。 同样对市场份额也是,产生变量marketshare_new, 数值为“低市场份额”和“高市场份额”
price=data1$price
pricebar=mean(price)
price_new= ifelse (price>pricebar,“高价格”,”低价格”)
marketshare=data1$marketshare
marketsharebar=mean(marketshare)
marketshare_new=ifelse(marketshare>marketsharebar ,“高市场份额”,”低市场份额”)
data1= mutate (data1,price_new,marketshare_new)
#可视化
#将Income 对数化
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 增加一个维度,使用明暗程度作为区分方式
ggplot(data=inner_join)+
geom_point(mapping = aes(x=Years_at_Employer,y= Income,
alpha=factor( Is_Default ) ))
#使用形状作为另外一种区分方式
ggplot(data=inner_join)+
geom_point(mapping = aes(x=Years_at_Employer,y= Income,
shape=factor( Is_Default)))
可视化-R
拓展:
#将 flight1 表和 weather1 表根据共同变量进行内连接,随机抽取 100000 行数据, 将生产的结果保存为 flight_weather。 (提示:sample_n()函数,不用重复抽取)
flight_weather <- inner_join(flight1, weather1) %>% sample_n(100000)
# 从 flight_weather表中对三个出发机场按照平均出发延误时间排降序,并将结果保留在 longest_delay表中。把结果展示出来
longest_delay<- flight_weather %>%
group_by(origin) %>%
summarize(delay=mean(dep_delay, na.rm=TRUE )) %>%
arrange(desc(delay))
#根据不同出发地(origin)在平行的 3 个图中画出风速 wind_speed(x 轴)和出发 延误时间 dep_delay(y 轴)的散点图。
ggplot(data= flight_weather) +
geom_point(mapping=aes(x=wind_speed,y=dep_delay))+
facet_grid(.~origin, nrow = 3 ) # 按照class分类,分成3行
#根据 flight_weather 表,画出每个月航班数的直方分布图,x 轴为月份,y 轴是每个 月份航班数所占的比例。
ggplot(data=flight_weather)+
geom_bar(mapping=aes(x=month, y=..prop .., group=1))
#根据 flight_weather 表,画出每个月航班距离的 boxplot 图,x 轴为月份,y 轴为 航行距离, 根据的航行距离的中位数从低到高对 x 轴的月份进行重新排序
ggplot(data=flight_weather)+
geom_boxplot(mapping=aes(x= reorder (month,distance,FUN=median),y=distance))
线性回归
# 以Income作为因变量,Years at Employer作为自变量,进行 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")
#证明拟合直线是最优的
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