欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

R語言-如何讀取前n行數(shù)據(jù)

 更新時(shí)間:2021年04月22日 16:27:44   作者:炫炫有牛腩  
這篇文章主要介紹了R語言實(shí)現(xiàn)讀取前n行數(shù)據(jù)的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧

通常我們讀取文件時(shí)都會(huì)讀取全部的文件然后再進(jìn)行操作,但是當(dāng)讀取的數(shù)據(jù)量很大是讀取的時(shí)間會(huì)很長(zhǎng),而且占用RAM,對(duì)于寫測(cè)試代碼有點(diǎn)不方便。

所以只讀取前n行數(shù)據(jù)是一個(gè)挺不錯(cuò)的函數(shù)

##file:讀取文件路徑
##n:讀取的前n行
##header:是否有標(biāo)題行
readfile<-function(file, n=1000, header=T){
  pt <- file(file, "r")
  name <- NULL
  if(header){
    name <- strsplit(readLines(pt, 1), split=',')[[1]];  #讀取標(biāo)題
    f1 <- readLines(pt, n)
    data <- read.table(text=f1, sep=',', col.names=name)
  }else{
    data <- read.table(text=f1, sep=',')
  }
  close(pt)
  data 
}

測(cè)試,最近制作linux啟動(dòng)盤誤將移動(dòng)硬盤當(dāng)U盤,要死要死的,近500G資料丟失,因?yàn)橹瞥蓡?dòng)盤所以資料還找不回來。

所以沒有大型數(shù)據(jù)做測(cè)試。

之前200M的文件本人電腦上讀取前10000行也是秒讀的。

(data <- readfile(file="mtcars.csv", n=5, header=T))
       X..        X.mpg. X.cyl. X.disp. X.hp. X.drat.  X.wt.
1       Mazda RX4   21.0    6   160     110    3.90   2.620  
2   Mazda RX4 Wag   21.0    6   160     110    3.90   2.875  
3      Datsun 710   22.8    4   108      93    3.85   2.320  
4  Hornet 4 Drive   21.4    6   258     110    3.08   3.215  


class(data)
[1] "data.frame"

補(bǔ)充:R語言(數(shù)據(jù)讀寫操作)

本節(jié)介紹一些實(shí)用的數(shù)據(jù)處理函數(shù)(如行、列合并),以及如何從各種數(shù)據(jù)源讀、寫數(shù)據(jù)。

實(shí)用函數(shù)

函數(shù) 含義
length() 對(duì)象的長(zhǎng)度。如 2 行 3 列的矩陣,其長(zhǎng)度為 6。
dim() 對(duì)象的維度。如 2 3 表示對(duì)象是二維的,有 2 行 3 列。
str() 對(duì)象的結(jié)構(gòu)。常用于查看數(shù)據(jù)框各列的數(shù)據(jù)類型、或者因子的分級(jí)數(shù)量。
class() 對(duì)象的類。比如矩陣的返回結(jié)果是 matrix。
typeof() 對(duì)象內(nèi)數(shù)據(jù)的類型。比如矩陣的返回結(jié)果是 integer。
mode() 對(duì)象的模式。比如矩陣會(huì)返回 numeric。
names() 對(duì)象中各成分的名稱。
cbind() 按列合并多個(gè)對(duì)象。
rbind() 按行合并多個(gè)對(duì)象。
objectname 輸出對(duì)象。
head() 輸出對(duì)象的前部,對(duì)于數(shù)據(jù)框而言是前6行。通過 head(obj, N) 來指定輸出前 N 行。
tail() 類似地,輸出對(duì)象的后部。
ls(NULL) 無參數(shù)函數(shù)。顯示當(dāng)前所有對(duì)象的名稱列表。
rm() 刪除單個(gè)或多個(gè)對(duì)象。使用 rm(list = ls()) 可以刪除除句點(diǎn)開頭的隱藏對(duì)象外的所有對(duì)象。

一個(gè) ls() 函數(shù)的例子:

a <- matrix(1:6, nrow=2, ncol=3)ls() # 目前的對(duì)象只有 a

‘a(chǎn)'

手動(dòng)輸入

使用需要賦值的 edit() 函數(shù),或者無需寫在賦值語句內(nèi)的 fix() 函數(shù)。

dt <- data.frame(age = numeric(0), gender = character(0), weight = numeric(0))# dt <- edit(dt)  # 需要自賦值# fix(dt)  # 無需自賦值

遺憾的是,在 Jupyter Notebook 現(xiàn)行的版本中,尚且不支持 edit() 函數(shù)。不過用戶可以使用 fix() 函數(shù)。

讀取文件

關(guān)于怎樣讀取來自 URL 地址的網(wǎng)絡(luò)文件,R 可以實(shí)現(xiàn),但這里不做討論。以下只討論本地?cái)?shù)據(jù)源的讀寫。

分隔符文件

利用 read.table() 函數(shù)即可。其常用的參數(shù)有:

read.table(file, [header=T/F, sep=" ", row.names=, col.names=, na.strings=, 
       colClasses=, quote=, skip=, stringAsFactors=T/F,])

其中,可選參數(shù)的含義大多較好理解:

header 表示文件首行是否是列名而不是數(shù)據(jù);

sep 是列間分隔符;na.strings 指定一個(gè)字符向量,內(nèi)部所有的元素在讀取時(shí)會(huì)被轉(zhuǎn)換為 NA;

colClasses 用于指派各列的類型,如 =c(“numeric”, “character”, “NULL”) 指定了前兩列的類型并跳過了第三列;

skip 用于跳過文件的最開始的若干行;

stringAsFactors 為 TRUE(默認(rèn)值)時(shí)表示字符向量按因子處理,設(shè)為 FALSE 可以提升大文本處理速度。

data.path <- paste(getwd(), '/data/iris.data.csv', sep='')dt <- read.table(data.path, header=T, sep=",")head(dt)
X5.1 X3.5 X1.4 X0.2 Iris.setosa
4.9 3.0 1.4 0.2 Iris-setosa
4.7 3.2 1.3 0.2 Iris-setosa
4.6 3.1 1.5 0.2 Iris-setosa
5.0 3.6 1.4 0.2 Iris-setosa
5.4 3.9 1.7 0.4 Iris-setosa
4.6 3.4 1.4 0.3 Iris-setosa
# 利用 str() 函數(shù)查看其信息str(dt)
'data.frame':	149 obs. of  5 variables:
 $ X5.1       : num  4.9 4.7 4.6 5 5.4 4.6 5 4.4 4.9 5.4 ...
 $ X3.5       : num  3 3.2 3.1 3.6 3.9 3.4 3.4 2.9 3.1 3.7 ...
 $ X1.4       : num  1.4 1.3 1.5 1.4 1.7 1.4 1.5 1.4 1.5 1.5 ...
 $ X0.2       : num  0.2 0.2 0.2 0.2 0.4 0.3 0.2 0.2 0.1 0.2 ...
 $ Iris.setosa: Factor w/ 3 levels "Iris-setosa",..: 1 1 1 1 1 1 1 1 1 1 ...

須知:

如果列名中包含空格,R 會(huì)將空格替換為句點(diǎn)。

多數(shù)情況下,stringAsFactors 可以設(shè)為 FALSE。但是本例中的字符變量表示植物的種類,此處讀成因子是正確的。

函數(shù) read.csv() 能夠讀取 csv 文件,但是功能不如 read.table() —— 后者能處理非 csv 文本。

處理 Excel 文件

讀取一個(gè) Excel 文件最佳的方式,是預(yù)先將其轉(zhuǎn)為 csv 格式,并用上述的 read.table() 方法讀取。

你也可以查找關(guān)于 xlsx 包的相關(guān)內(nèi)容,來獲知如何直接操作 xlsx 文件。此處略過不提。

可以看一下以前寫的文章:

統(tǒng)計(jì)軟件數(shù)據(jù):SAS/SPSS/Stata

需要用到 foreign 包。

SAS:使用 read.ssd()。如果你安裝了 SAS,可以使用 Hmisc 包的 sas.get()。

SPSS:使用 read.spss(),或者 Hmisc 包的 spss.get()。

Stata:使用 read.data()。

數(shù)據(jù)庫

一個(gè)方法是使用 ODBC 接口。針對(duì)你的數(shù)據(jù)庫類型,安裝 ODBC 驅(qū)動(dòng);然后在 R 中安裝 RODBC 包。

另一個(gè)方法是使用 JDBC 接口,只不過需要 RJDBC 包。

寫入文件

在我們對(duì)于數(shù)據(jù)進(jìn)行清洗之后,往往需要把清洗結(jié)果輸出到一個(gè)新文件中。這里就以 csv 格式為例吧。一個(gè)通常的 write.table()/write.csv() 的例子:

write.csv(dt, "filename.csv", row.names=F)

其中 row.names 指定為 FALSE,否則第一列會(huì)生成行號(hào)一樣的數(shù)據(jù)。

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教。

相關(guān)文章

  • R語言matrix生成矩陣的方法

    R語言matrix生成矩陣的方法

    這篇文章主要介紹了R語言matrix生成矩陣的方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • 在R語言中實(shí)現(xiàn)Logistic邏輯回歸的操作

    在R語言中實(shí)現(xiàn)Logistic邏輯回歸的操作

    這篇文章主要介紹了在R語言中實(shí)現(xiàn)Logistic邏輯回歸的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2021-04-04
  • 利用R語言合并數(shù)據(jù)框的行與列實(shí)例代碼

    利用R語言合并數(shù)據(jù)框的行與列實(shí)例代碼

    實(shí)際操作中我們經(jīng)常需要引入其他表中的列,即將其他表中列加入到表中,需要把兩個(gè)或者更多的表合并成一個(gè),下面這篇文章主要給大家介紹了關(guān)于利用R語言合并數(shù)據(jù)框的行與列的相關(guān)資料,需要的朋友可以參考下
    2022-07-07
  • R語言中set.seed()函數(shù)的作用詳解

    R語言中set.seed()函數(shù)的作用詳解

    set.seed()括號(hào)里面的參數(shù)可以是任意數(shù)字,是代表你設(shè)置的第幾號(hào)種子而已,不會(huì)參與運(yùn)算,是個(gè)標(biāo)記而已。,這篇文章主要介紹了R語言中set.seed()函數(shù)的作用,需要的朋友可以參考下
    2022-09-09
  • R語言對(duì)數(shù)據(jù)庫進(jìn)行操作的實(shí)例詳解

    R語言對(duì)數(shù)據(jù)庫進(jìn)行操作的實(shí)例詳解

    在本篇文章里小編給大家分享的是一篇關(guān)于R語言對(duì)數(shù)據(jù)庫進(jìn)行操作的實(shí)例詳解內(nèi)容,有興趣的朋友們跟著學(xué)習(xí)下吧。
    2021-05-05
  • R語言-如何將循環(huán)所得的矩陣組成一個(gè)矩陣

    R語言-如何將循環(huán)所得的矩陣組成一個(gè)矩陣

    這篇文章主要介紹了R語言實(shí)現(xiàn)將循環(huán)所得的矩陣組成一個(gè)矩陣的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2021-04-04
  • R語言繪制數(shù)據(jù)可視化小提琴圖Violin plot with dot畫法

    R語言繪制數(shù)據(jù)可視化小提琴圖Violin plot with dot畫法

    這篇文章主要為大家介紹了R語言繪制數(shù)據(jù)可視化小提琴圖Violin plot with dot畫法的示例詳解有需要的朋友可以借鑒參考下希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-02-02
  • 詳解R語言數(shù)據(jù)合并一行代碼搞定

    詳解R語言數(shù)據(jù)合并一行代碼搞定

    這篇文章主要介紹了詳解R語言數(shù)據(jù)合并一行代碼搞定,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • R語言正態(tài)分布的實(shí)現(xiàn)示例

    R語言正態(tài)分布的實(shí)現(xiàn)示例

    R語言中正態(tài)分布包括四個(gè)主要函數(shù):rnorm、dnorm、pnorm、qnorm,分別用于生成隨機(jī)數(shù)、計(jì)算概率密度、累積概率和計(jì)算分位數(shù),本文就來詳細(xì)的介紹一下具體用法,感興趣的可以了解一下
    2024-10-10
  • 詳解R語言caret包trainControl函數(shù)

    詳解R語言caret包trainControl函數(shù)

    這篇文章主要介紹了R語言caret包trainControl函數(shù)詳解,本文通過源碼分析給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-08-08

最新評(píng)論