dpylr的使用
mutate
test<-mutate(test,new=test[,1]*test[,3])
test<-mutate(test,new=c(1:150))
mutate(数据库,标题=赋值)select
select(test,1)
select(test,c(1:5))
a<-select(test,c("new","Species"))
vars <- c("Petal.Length", "Petal.Width")
select(test, one_of(vars))
one_of的函数的应用
filter
filter(test,new==1)
filter(test,new==1&Species=="versicolor")
filter(test, Species %in% c("setosa","versicolor"))
%in% 判断前方的对象是否在后方中arrange
arrange(test, desc(Sepal.Length))
#用desc从大到小
arrange(test, Sepal.Length)
#默认从小到大排序summarise
summarise(test,sd(new),mean(new)) group_by(test,Species) summarise(group_by(test,Species),sd(new),mean(new))
%>%
加载tidyverse包后使用
非常好用,可以当作把前面的数据自动放到%>% 的函数内,并且可以多个使用。
test %>% group_by(Species) %>% filter(new==1)
count
数数用的
test %>% group_by(Species) %>% count(Species=="setosa")
stringsAsFactors
stringsAsFactors = F
意味着,“在读入数据时,遇到字符串之后,不将其转换为factors,仍然保留为字符串格式”。即abcd=a,b,c,d. abcd !="abcd"
- inner_join
inner_join(test1, test2, by = "x")
首先在2个test的x列取交集,然后将它们的其他列都补充出来。
image.png
image.png
左连接的意思是left_join(test1,test2,by=“x”),根据test1做表,然后根据test1中的x列去和test2的x匹配,如果匹配成功,就将test2匹配的那一行的数据放到test1的那一行匹配成功的数字后面。
image.png
full_join( test1, test2, by = 'x')
full_join的意思是首先把test1不动,然后根据test1的x列来,如果test2的x列有和test1的x列相符合的数据,则放到test1的x列后,而没有符合的test2的x列的数据将自动拿到test1的x列下方。
semi_join(x = test1, y = test2, by = 'x')
x为主表,不做任何添加,将test1的x列拿出来与test2中的x列进行匹配,然后保留匹配成功的test1的表
anti_join(x = test2, y = test1, by = 'x')
这个是去除和相匹配的表
- 简单合并
test1 <- data.frame(x = c(1,2,3,4), y = c(10,20,30,40)) test2 <- data.frame(x = c(5,6), y = c(50,60)) test3 <- data.frame(z = c(100,200,300,400)) a<-bind_rows(test1, test2) b<-bind_cols(test1,test3)
要保证数量一样
test1 <- data.frame(x = c(1,2,3,4), y = c(10,20,30,40)) test2 <- data.frame(x = c(5,6,7,8), y = c(50,60,8,8)) test3 <- cbind(test1,test2)