日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

r语言中mpg数据_R语言常用的数据处理的包(1)

發布時間:2024/8/1 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 r语言中mpg数据_R语言常用的数据处理的包(1) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在R中有很多的內置函數,比如transform()、rbind()、cbind()等函數,這些函數我們可以直接使用,除此之外,還有常見的幾種包在處理數據的時候非常好用。

dplyr包

dplyr包是Hadley Wickham(ggplot2包的作者,被稱為‘一個改變R的人’)的杰作, dplyr可用于處理R內部或者外部的結構化數據,相較于plyr包,dplyr專注接受dataframe對象, 大幅提高了速度,并且提供了更穩健的數據庫接口。

一、篩選: filter系列

filter、filter_all、filter_at、filter_if

用法:filter(.data, 條件...)

這里我們用R的內置數據集作為例子(mtcars)

filter(mtcars, cyl == 8)

filter(mtcars, cyl < 6)

#過濾出cyl < 6 并且 vs == 1的行

filter(mtcars, cyl < 6 & vs == 1)

filter(mtcars, cyl < 6, vs == 1)

#過濾出cyl < 6 或者 vs == 1的行

filter(mtcars, cyl < 6 | vs == 1)

#過濾出cyl 為4或6的行

filter(mtcars, cyl %in% c(4, 6))

基于filter函數的用法,擴展出了一些新的函數

1filter_all(mtcars, any_vars(. > 150)) #篩選任何變量>150的樣本

2filter_at(mtcars, vars(starts_with("d")), any_vars((. %% 2) == 0))

3#篩選變量以“d”結尾,并且變量 "%%2" 等于0

4filter_if(mtcars, ~ all(floor(.) == .), all_vars(. != 0))

5# 篩選變量向下取整 == 原變量數值, 并且這部分變量的數值!= 0 的樣本集

二、slice函數

用法:slice(.data, ...)

用處: slice() 函數通過行號選取數據

#選取第一行的數據

slice(mtcars, 1L)

filter(mtcars, row_number() == 1L)

#選取最后一行數據

slice(mtcars, n())

filter(mtcars, row_number() == n())

#選取第5行到最后一行所有數據

slice(mtcars, 5:n())

filter(mtcars, between(row_number(), 5, n()))

這個函數在實際中并不常用,但是在某些情況下就會非常好用。

三、排列: arrange

用法:arrange(.data, ...)

arrange()按給定的列名依次對行進行排序,默認是按照升序排序,對列名加 desc() 可實現倒序排序。原數據集行名稱會被過濾掉。

#以cyl和disp聯合升序排序 ,如果cyl相同,按照disp

arrange(mtcars, cyl, disp)

#以disp降序排序

arrange(mtcars, desc(disp))

四、選擇: select

用法:select(.data, ...)

#選取變量名前綴包含Petal的列

select(iris, starts_with("Petal"))

#選取變量名前綴不包含Petal的列

select(iris, -starts_with("Petal"))

#選取變量名后綴包含Width的列

select(iris, ends_with("Width"))

#選取變量名后綴不包含Width的列

select(iris, -ends_with("Width"))

#選取變量名中包含etal的列

select(iris, contains("etal"))

#選取變量名中不包含etal的列

select(iris, -contains("etal"))

#正則表達式匹配,返回變量名中包含t的列

select(iris, matches(".t."))

#正則表達式匹配,返回變量名中不包含t的列

select(iris, -matches(".t."))

#直接選取列

select(iris, Petal.Length, Petal.Width)

#返回除Petal.Length和Petal.Width之外的所有列

select(iris, -Petal.Length, -Petal.Width)

#使用冒號連接列名,選擇多個列

select(iris, Sepal.Length:Petal.Width)

#選擇字符向量中的列,select中不能直接使用字符向量篩選,需要使用one_of函數

vars

select(iris, one_of(vars))

#返回指定字符向量之外的列

select(iris, -one_of(vars))

#返回所有列,一般調整數據集中變量順序時使用

select(iris, everything())

#調整列順序,把Species列放到最前面

select(iris, Species, everything())

一般我們用select函數選擇一個數據的幾列

df

df

#選擇V4,V5,V6三列

select(df, V4:V6)

select(df, num_range("V", 4:6))

五、變形: mutate

用法:mutate(.data, ...)

mutate()函數對已有列進行數據運算并添加為新列,

#添加新列wt_kg和wt_t,在同一語句中可以使用剛添加的列

mutate(mtcars, wt_kg = wt * 453.592, wt_t = wt_kg / 1000)

#計算新列wt_kg和wt_t,返回對象中只包含新列

transmute(mtcars, wt_kg = wt * 453.592, wt_t = wt_kg / 1000)

六、分組: group

用法:group_by(.data, ..., add = FALSE)

group_by()用于對數據集按照給定變量分組,返回分組后的數據集。對返回后的數據集使用以上介紹的函數時,會自動的對分組數據操作。

#使用變量cyl對mtcars分組,返回分組后數據集

by_cyl

#返回每個分組中最大disp所在的行

filter(by_cyl, disp == max(disp))

#返回每個分組中變量名包含d的列,始終返回分組列cyl

select(by_cyl, contains("d"))

#使用mpg對每個分組排序

arrange(by_cyl, mpg)

#對每個分組無重復的取2行記錄

sample_n(by_cyl, 2)

七、數據關聯:join

類似于merge的用法

#內連接,合并數據僅保留匹配的記錄

inner_join(x,y, by = NULL, copy = FALSE, suffix = c(".x", ".y"), ...)

#左連接,向數據集x中加入匹配的數據集y記錄

left_join(x,y, by = NULL, copy = FALSE, suffix = c(".x", ".y"), ...)

#右連接,向數據集y中加入匹配的數據集x記錄

right_join(x,y, by = NULL, copy = FALSE, suffix = c(".x", ".y"), ...)

#全連接,合并數據保留所有記錄,所有行

full_join(x,y, by = NULL, copy = FALSE, suffix = c(".x", ".y"), ...)

#返回能夠與y表匹配的x表所有記錄

semi_join(x,y, by = NULL, copy = FALSE, ...)

#返回無法與y表匹配的x表的所有記錄

anti_join(x, y, by = NULL, copy = FALSE, ...)

當然,dplyr不止這一種用法,希望各位道友一起補充,豐富我們的數據數據經驗和生信分析的工作。

與50位技術專家面對面20年技術見證,附贈技術全景圖

總結

以上是生活随笔為你收集整理的r语言中mpg数据_R语言常用的数据处理的包(1)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。