今天分享一下tidyverse中数据整理的中级操作
至于初级操作呢(join,arrange等),就不分享了。
1.拆分列,合并列
拆分
mtcars %>% separate(mpg,into = c("A","B"),sep = ".",
convert = T)
合并
mtcars %>% unite(new,mpg,cyl,sep="___")
2.重命名
下面是几种常用的方法
1. set_names() #所有列名重命名
2. mtcars %>% rename(aa=cyl,bb=disp)#具体列重命名!
3. names(data)=c("a","c")#所有列名重命名
4. colnames(data)[2]="a" # 第二列重命名为a
5. rownames(a)=a[,1]#第一列改为行名
3.新列
1.mtcars %>% mutate(across(where(is.numeric),scale))
#数字列标准化
2.across(选列,函数)#这个函数意思是选择的列用于某函数,和
mutate函数配合用
4.筛选行filter,我认为这是dplyr中最重要的函数
1. mtcars %>% filter(if_all(3:4,~.x>200))
#3:4选列,每个值都大于200
2. data %>% filter(if_all(everything(),~!is.na(.x)))
#所有列观测值全部非NA
3. data %>% filter(if_any(everything(),~ str_ detect(.x,"bl")))
#存在bl的行
4. mtcars %>% filter(if_any(where(is.numeric),~.x > 260))
#存在大于260的行
4. 添加标签or生成新列
1. mtcars %>% mutate(new=if_else(cyl<5,"small","big"))
#适合于分两类的情况
2. 适合于分多类的情况
mtcars %>%
mutate(new=case_when(mpg<10~"small",
mpg>=10&mpg<20~"middle",
mpg>20~"big"))
3. 除了简单标记外,case_when还有更高级的用法,将~后使用函数生成新列
先定义三个函数
f1=function(x){x^2}
f2=function(x){x^3}
f3=function(x){x^4}
这个函数真的很实用,希望大家都能了解到它的强大
mtcars %>% mutate(new=case_when(mpg<10~f1(mpg),
mpg>=10&mpg<20~f2(mpg),
mpg>20~f3(mpg)))
4. 自定义分组频数统计
mtcars %>% group_by(new=cut(disp,breaks =c(0,100,200,300,500),
right = FALSE)) %>%count()
今天就先分享到这,格式有点乱,大家凑合着先看看吧~
希望大家关注我的个人公众号“森林生态小小圈”,我会不定期更新一些R语言,和生态学方面的东西,谢谢大家~
最后,祝大家五一快乐~