思维导图(请关注生信星球微信公众号)
学习R包
- 安装R包:install.packages("")
- 加载R包:library(
学习dplyr包
- mutate(),新增列
- select(),按列筛选
- filter()筛选行
- arrange(),按某1列或某几列对整个表格进行排序
- summarise():汇总
dplyr实用技能
- 管道操作 %>% (cmd/ctr + shift + M)
- count统计某列的unique值
dplyr处理关系数据
- 內连inner_join,取交集
- 左连left_join
- 全连full_join
- 半连接:返回能够与y表匹配的x表所有记录semi_join
- 反连接:返回无法与y表匹配的x表的所记录anti_join
- 简单合并
library(dplyr) #加载包
iris #查看数据集结构
test <- iris[c(1:2,51:52,101:102),] #选取数据集固定行
mutate(test,new=Sepal.Length*Sepal.Width) # 新建变量
select(test,1) #选择第一列
select(test,c(1:5)) #选择1-5列
select(test,Sepal.Length) # 选择列名为Sepal.Length
filter(test,Species == "setosa") #选择 变量为setosa的行
arrange(test,Sepal.Length) # 按照Sepal.Length 从小到大排序
arrange(test,desc(Sepal.Length)) # 按照Sepal.Length 降序
summarise(test,mean(Sepal.Length),sd(Sepal.Length)) # 求解均值和方差
group_by(test,Species) #按照 Species 分类
summarise(group_by(test, Species),mean(Sepal.Length), sd(Sepal.Length)) #分别对 Species 分类 求值
test %>% #管道操作
group_by(Species) %>%
summarise(mean(Sepal.Length), sd(Sepal.Length))
count(test,Species) # 分类求频数
options(stringsAsFactors = F)
test1 <- data.frame(x=c('b','e','f','x'), #建立数据集开始合并
z=c("A","B","C","D"),
stringsAsFactors = F)
test1
test2 <- data.frame(x = c('a','b','c','d','e','f'),
y = c(1,2,3,4,5,6),
stringsAsFactors = F)
inner_join(test1,test2,by='x') #内连接
left_join(test1, test2, by = 'x') #左连接
full_join( test1, test2, by = 'x') #全连接
semi_join(x = test1, y = test2, by = 'x') #半连接
anti_join(x = test2, y = test1, by = 'x') # 反连接
test1 <- data.frame(x = c(1,2,3,4), y = c(10,20,30,40))
test1
test2 <- data.frame(x = c(5,6), y = c(50,60))
test2
test3 <- data.frame(z = c(100,200,300,400))
test3
bind_rows(test1, test2) #简单合并
bind_cols(test1, test3)