中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

R語言中怎么讀取前n行數據

發布時間:2021-04-26 14:52:55 來源:億速云 閱讀:2232 作者:小新 欄目:開發技術

小編給大家分享一下R語言中怎么讀取前n行數據,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

什么是R語言

R語言是用于統計分析、繪圖的語言和操作環境,屬于GNU系統的一個自由、免費、源代碼開放的軟件,它是一個用于統計計算和統計制圖的優秀工具。

通常我們讀取文件時都會讀取全部的文件然后再進行操作,但是當讀取的數據量很大是讀取的時間會很長,而且占用RAM,對于寫測試代碼有點不方便。

所以只讀取前n行數據是一個挺不錯的函數

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

測試,最近制作linux啟動盤誤將移動硬盤當U盤,要死要死的,近500G資料丟失,因為制成啟動盤所以資料還找不回來。

所以沒有大型數據做測試。

之前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"

補充:R語言(數據讀寫操作)

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

實用函數

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

一個 ls() 函數的例子:

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

‘a'

手動輸入

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

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

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

讀取文件

關于怎樣讀取來自 URL 地址的網絡文件,R 可以實現,但這里不做討論。以下只討論本地數據源的讀寫。

分隔符文件

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

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

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

header 表示文件首行是否是列名而不是數據;

sep 是列間分隔符;na.strings 指定一個字符向量,內部所有的元素在讀取時會被轉換為 NA;

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

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

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

data.path <- paste(getwd(), '/data/iris.data.csv', sep='')dt <- read.table(data.path, header=T, sep=",")head(dt)
X5.1X3.5X1.4X0.2Iris.setosa
4.93.01.40.2Iris-setosa
4.73.21.30.2Iris-setosa
4.63.11.50.2Iris-setosa
5.03.61.40.2Iris-setosa
5.43.91.70.4Iris-setosa
4.63.41.40.3Iris-setosa
# 利用 str() 函數查看其信息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 會將空格替換為句點。

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

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

處理 Excel 文件

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

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

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

統計軟件數據:SAS/SPSS/Stata

需要用到 foreign 包。

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

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

Stata:使用 read.data()。

數據庫

一個方法是使用 ODBC 接口。針對你的數據庫類型,安裝 ODBC 驅動;然后在 R 中安裝 RODBC 包。

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

寫入文件

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

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

其中 row.names 指定為 FALSE,否則第一列會生成行號一樣的數據。

以上是“R語言中怎么讀取前n行數據”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

景宁| 海阳市| 清徐县| 桑植县| 金溪县| 阜宁县| 绥芬河市| 井陉县| 茶陵县| 家居| 长春市| 新安县| 西乡县| 武川县| 瑞昌市| 息烽县| 绿春县| 苗栗县| 吴江市| 石狮市| 长葛市| 宁都县| 徐州市| 叶城县| 镇安县| 阿坝县| 襄城县| 河西区| 梅州市| 桐城市| 台中县| 苍南县| 广灵县| 天等县| 长兴县| 甘泉县| 海伦市| 平舆县| 报价| 滁州市| 西峡县|