在R中,我們通常需要對數據列進行各種各樣的操作,比如選取某一列、重命名某一列等。
dplyr中的select函數子在數據列的操作上也同樣表現了它的簡潔性,而且各種操作眼花繚亂。
select(.data, ...)
參數主要在於如何添加條件。配合select()進行使用的函數有:
starts_with()
ends_with()
contains()
matches()
num_range()
one_of()
everything()
配合以上這些函數,使得select()的使用更加的靈活。
除了選擇列以外,我們還可以添加一列,使用函數mutate()或transmute()
mutate(.data, ...)
transmute(.data, ...)
下面來看些具體的例子
library(dplyr) x<-data.frame(id=1:6, name=c("wang","zhang","li","chen","zhao","song"), shuxue=c(89,85,68,79,96,53), yuwen=c(77,68,86,87,92,63), shengwu=c(85,68,78,68,98,96)) x
select(x,name)
選取單列
select(x,starts_with("s"))
選取包好以“s”開頭的列
select(x,ends_with("e"))
選取以“e”結尾的列。
select(x,matches(".e."))
匹配中間含有“e”的列
select(x,contains("e"))
匹配所有名稱中包含“e”的列
select(x,-name)
在名字前面加個“-”,表示出了這一列以外,其他的列都顯示
select(x,1:3)
也可以直接用列的編號表示要選擇的列
select(x,mz=name)
選擇列的時候,同時對列名進行重命名
select(x,cmm=starts_with("s"))
同樣的可以對多列進行重命名,並選擇
select(x,name,everything())
可以對數據進行排序,列較多的情況下把不需要排序的列用evything()直接列出。
下面使用mutate()函數對數據進行增加列。
mutate(x,yingyu=shuxue*1.2)
transmute(x,yingyu=shuxue*1.2)
可以看到,使用matate是在原來列的基礎上增加一列,而使用transmute是新建一個數據框。
mutate(x,shuxue=NULL)
除了,增加列以外還可以把NULL賦值給列,已達到刪除列的效果。