本文首發(fā)于:醫(yī)學(xué)和生信筆記,完美觀看體驗(yàn)請(qǐng)至公眾號(hào)查看本文。文章來源地址http://www.zghlxwxcb.cn/news/detail-418304.html
本文面向R語言初學(xué)者,尤其是生物醫(yī)藥領(lǐng)域的初學(xué)者,大佬勿噴~
在之前的推文中,我們用兩個(gè)視頻詳細(xì)介紹了R語言、rtools、Rstudio以及R包的安裝,解決新手最先碰到的兩大難題!
接下來大家就面臨把數(shù)據(jù)讀入R語言、把數(shù)據(jù)另存為其他格式的問題!
大家在日常生活中遇到的最多的數(shù)據(jù)應(yīng)該還是Excel數(shù)據(jù),但是對(duì)于R語言來說,我們必須要把外部數(shù)據(jù)讀入到R里面,才能進(jìn)行各種操作。對(duì)于我們最后的數(shù)據(jù),可能還需要再保存為excel格式。
這兩個(gè)問題對(duì)于會(huì)的人來說非常簡單,可以有多種方法可以實(shí)現(xiàn),但是對(duì)于新手來說卻經(jīng)常遇到報(bào)錯(cuò)。今天從一個(gè)新手的角度說一說R語言的數(shù)據(jù)讀入和另存問題。
把數(shù)據(jù)讀入R語言
Excel
這個(gè)格式太常見了,大家日常生活用的大部分都是這種格式。比如有這么一個(gè)excel文件:data.xlsx
,它里面的內(nèi)容是這樣的:
現(xiàn)在我們需要把它讀入R里面。我推薦你使用readxl
包讀取Excel文件。首先我們要安裝這個(gè)R包,如果你還不會(huì)R包安裝常見的4種方式,趕緊去看這個(gè)視頻:xxxxxxxxxxxxx。
install.packages("readxl")
安裝好之后,我們需要加載這個(gè)R包才能使用:
library(readxl)
然后我們就可以讀入這個(gè)文件了,讀取時(shí),你必須指明你的文件在哪里! 如果文件路徑?jīng)]寫對(duì),就會(huì)出現(xiàn)下面這種類似的報(bào)錯(cuò),一般情況下,它會(huì)告訴你,你的路徑?jīng)]寫對(duì),或者找不到這個(gè)文件,這個(gè)文件不存在,不能打開連接等等錯(cuò)誤!!
tmp <- read_xlsx("E:/data.xlsx", col_names = T)
## Error: `path` does not exist: ‘E:/R/data.xlsx’
這個(gè)時(shí)候你就要去確認(rèn)下,你的這個(gè)data.xlsx
文件到底在哪里!當(dāng)你給它正確的路徑時(shí),它就不會(huì)報(bào)錯(cuò)。還要注意/ \ , " "
,這些標(biāo)點(diǎn)一定要在英文狀態(tài)下輸入!
tmp <- read_xlsx("E:/R/data.xlsx", col_names = T)
tmp
## # A tibble: 29 × 6
## 編號(hào) 治療方式 性別 年齡 收縮壓 血糖
## <dbl> <chr> <chr> <dbl> <dbl> <dbl>
## 1 1 方法1 男 56 134 6.3
## 2 2 方法2 女 45 123 4.6
## 3 3 方法3 男 67 112 7.4
## 4 4 方法4 女 56 113 8.5
## 5 5 方法5 男 78 115 6.3
## 6 6 方法6 女 56 116 4.6
## 7 7 方法7 男 67 134 7.4
## 8 8 方法8 女 45 123 8.5
## 9 9 方法9 男 67 112 6.3
## 10 10 方法10 女 87 113 4.6
## # … with 19 more rows
## # ? Use `print(n = ...)` to see more rows
這樣我們就成功把文件讀取到R里面了!
除了路徑問題,對(duì)于新手還有幾個(gè)點(diǎn)需要注意:
- 這個(gè)示例文件是有列名的,所以在讀取的時(shí)候加了
col_names=T
這個(gè)參數(shù),沒有行名就要改成F
; - 如果你的數(shù)據(jù)使用了合并/拆分單元格、各種格式、公式等,會(huì)報(bào)錯(cuò)!
- 這個(gè)文件是
.xlsx
格式的,如果不是,那你需要用其他函數(shù),比如read_xls()
函數(shù)讀取.xls
結(jié)尾的文件; - 如果你讀取中文遇到亂碼問題,那大概率是遇到了編碼問題,這是一個(gè)很復(fù)雜的問題:
- 首先你可以通過點(diǎn)擊rstudio中的Tools - Global Options,到達(dá)以下界面,把默認(rèn)編碼方式改為
utf-8
,然后關(guān)閉rstudio,重新讀取;
[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來直接上傳(img-0LkHBpNt-1668216404004)(C:\Users\liyue\Desktop\Snipaste_2022-07-31_19-13-14.png)] - 有時(shí)直接升級(jí)R包/R/rstudio/,重新保存文件為utf-8等方式也可以解決問題;
- 如果都不行,直接百度!具體情況具體分析!
- 首先你可以通過點(diǎn)擊rstudio中的Tools - Global Options,到達(dá)以下界面,把默認(rèn)編碼方式改為
csv
csv文件是一種逗號(hào)分隔文件,打開后和excel看起來一模一樣,你不要問為什么看不到逗號(hào)…
一般推薦把excel文件另存為csv文件,因?yàn)榉奖鉘語言讀取,不需要安裝R包也可以讀取~
csv <- read.csv("E:/R/data.csv", header = T)
csv
## 編號(hào) 治療方式 性別 年齡 收縮壓 血糖
## 1 1 方法1 男 56 134 6.3
## 2 2 方法2 女 45 123 4.6
## 3 3 方法3 男 67 112 7.4
## 4 4 方法4 女 56 113 8.5
## 5 5 方法5 男 78 115 6.3
## 6 6 方法6 女 56 116 4.6
## 7 7 方法7 男 67 134 7.4
## 8 8 方法8 女 45 123 8.5
## 9 9 方法9 男 67 112 6.3
## 10 10 方法10 女 87 113 4.6
## 11 11 方法11 男 56 115 7.4
## 12 12 方法12 女 78 116 8.5
## 13 13 方法13 男 67 134 6.3
## 14 14 方法14 女 56 123 4.6
## 15 15 方法15 男 78 112 7.4
## 16 16 方法16 女 56 113 8.5
## 17 17 方法17 男 45 115 6.3
## 18 18 方法18 女 67 116 4.6
## 19 19 方法19 男 56 134 7.4
## 20 20 方法20 女 78 123 8.5
## 21 21 方法21 男 56 112 6.3
## 22 22 方法22 女 67 113 4.6
## 23 23 方法23 男 45 115 7.4
## 24 24 方法24 女 67 116 8.5
## 25 25 方法25 男 87 134 6.3
## 26 26 方法26 女 56 123 4.6
## 27 27 方法27 男 78 112 7.4
## 28 28 方法28 女 67 113 8.5
## 29 29 方法29 男 56 115 6.3
或者用read.table()
函數(shù)讀取。
csv <- read.table("E:/R/data.csv", header = T,
sep = "," # 指定分隔符!!
)
csv
## 編號(hào) 治療方式 性別 年齡 收縮壓 血糖
## 1 1 方法1 男 56 134 6.3
## 2 2 方法2 女 45 123 4.6
## 3 3 方法3 男 67 112 7.4
## 4 4 方法4 女 56 113 8.5
## 5 5 方法5 男 78 115 6.3
## 6 6 方法6 女 56 116 4.6
## 7 7 方法7 男 67 134 7.4
## 8 8 方法8 女 45 123 8.5
## 9 9 方法9 男 67 112 6.3
## 10 10 方法10 女 87 113 4.6
## 11 11 方法11 男 56 115 7.4
## 12 12 方法12 女 78 116 8.5
## 13 13 方法13 男 67 134 6.3
## 14 14 方法14 女 56 123 4.6
## 15 15 方法15 男 78 112 7.4
## 16 16 方法16 女 56 113 8.5
## 17 17 方法17 男 45 115 6.3
## 18 18 方法18 女 67 116 4.6
## 19 19 方法19 男 56 134 7.4
## 20 20 方法20 女 78 123 8.5
## 21 21 方法21 男 56 112 6.3
## 22 22 方法22 女 67 113 4.6
## 23 23 方法23 男 45 115 7.4
## 24 24 方法24 女 67 116 8.5
## 25 25 方法25 男 87 134 6.3
## 26 26 方法26 女 56 123 4.6
## 27 27 方法27 男 78 112 7.4
## 28 28 方法28 女 67 113 8.5
## 29 29 方法29 男 56 115 6.3
是不是很簡單,注意點(diǎn)和excel一樣~
txt
txt文件也是我們常見的文件類型,通常這種數(shù)據(jù)也是可以直接讀取的,不同安裝R包。
現(xiàn)在我們有一個(gè)這樣的txt文件,它可能看起來不規(guī)整,但其實(shí)是規(guī)整的哦~~,不要被表象迷惑,也千萬不要試圖用空格鍵把它對(duì)齊!!
txt是tab
鍵分隔的文件,在讀取時(shí),一定要指定分隔符:
tmp <- read.table("tmp.txt",sep = "\t", # 必須要指定分隔符
header = T)
tmp
## 編號(hào) 治療方式 性別 年齡 收縮壓 血糖
## 1 1 方法1 男 56 134 6.3
## 2 2 方法2 女 45 123 4.6
## 3 3 方法3 男 67 112 7.4
## 4 4 方法4 女 56 113 8.5
## 5 5 方法5 男 78 115 6.3
## 6 6 方法6 女 56 116 4.6
## 7 7 方法7 男 67 134 7.4
## 8 8 方法8 女 45 123 8.5
## 9 9 方法9 男 67 112 6.3
## 10 10 方法10 女 87 113 4.6
## 11 11 方法11 男 56 115 7.4
## 12 12 方法12 女 78 116 8.5
## 13 13 方法13 男 67 134 6.3
## 14 14 方法14 女 56 123 4.6
## 15 15 方法15 男 78 112 7.4
## 16 16 方法16 女 56 113 8.5
## 17 17 方法17 男 45 115 6.3
## 18 18 方法18 女 67 116 4.6
## 19 19 方法19 男 56 134 7.4
## 20 20 方法20 女 78 123 8.5
## 21 21 方法21 男 56 112 6.3
## 22 22 方法22 女 67 113 4.6
## 23 23 方法23 男 45 115 7.4
## 24 24 方法24 女 67 116 8.5
## 25 25 方法25 男 87 134 6.3
## 26 26 方法26 女 56 123 4.6
## 27 27 方法27 男 78 112 7.4
## 28 28 方法28 女 67 113 8.5
## 29 29 方法29 男 56 115 6.3
其他
如果是spss軟件產(chǎn)生的.sav
文件,可以使用foreign
包中的read.spss()
函數(shù)讀取,或者使用haven
包中的read_sav()
。
這兩個(gè)包在使用前需要先安裝哦~
# foreign包讀取
library(foreign)
spss <- foreign::read.spss("例03-05.sav",to.data.frame = T)
spss
## no hb
## 1 1 112
## 2 2 137
## 3 3 129
## 4 4 126
## 5 5 88
## 6 6 90
## 7 7 105
## 8 8 178
## 9 9 130
## 10 10 128
## 11 11 126
## 12 12 103
## 13 13 172
## 14 14 116
## 15 15 125
## 16 16 90
## 17 17 96
## 18 18 162
## 19 19 157
## 20 20 151
## 21 21 135
## 22 22 113
## 23 23 175
## 24 24 129
## 25 25 165
## 26 26 171
## 27 27 128
## 28 28 128
## 29 29 160
## 30 30 110
## 31 31 140
## 32 32 163
## 33 33 100
## 34 34 129
## 35 35 116
## 36 36 127
# haven包讀取
library(haven)
spss <- read_sav("例03-05.sav")
spss
## # A tibble: 36 × 2
## no hb
## <dbl> <dbl>
## 1 1 112
## 2 2 137
## 3 3 129
## 4 4 126
## 5 5 88
## 6 6 90
## 7 7 105
## 8 8 178
## 9 9 130
## 10 10 128
## # … with 26 more rows
## # ? Use `print(n = ...)` to see more rows
這個(gè)例子是比較簡單的,有時(shí)候需要指定特定的編碼方式,可以通過使用?read_sav/?read.spss
查看更改編碼的方式。
haven
這個(gè)包是專門設(shè)計(jì)用來讀取spss/SAS/STATA格式的文件的~
如果是rdata/Rdata/RData
文件,這個(gè)是R自帶的格式,直接load()
即可,但是要注意一定要寫對(duì)文件路徑??! 或者也可以直接雙擊rdata/Rdata/RData
文件!
load(file = "tmp.rdata")
tmp
## 編號(hào) 治療方式 性別 年齡 收縮壓 血糖
## 1 1 方法1 男 56 134 6.3
## 2 2 方法2 女 45 123 4.6
## 3 3 方法3 男 67 112 7.4
## 4 4 方法4 女 56 113 8.5
## 5 5 方法5 男 78 115 6.3
## 6 6 方法6 女 56 116 4.6
## 7 7 方法7 男 67 134 7.4
## 8 8 方法8 女 45 123 8.5
## 9 9 方法9 男 67 112 6.3
## 10 10 方法10 女 87 113 4.6
## 11 11 方法11 男 56 115 7.4
## 12 12 方法12 女 78 116 8.5
## 13 13 方法13 男 67 134 6.3
## 14 14 方法14 女 56 123 4.6
## 15 15 方法15 男 78 112 7.4
## 16 16 方法16 女 56 113 8.5
## 17 17 方法17 男 45 115 6.3
## 18 18 方法18 女 67 116 4.6
## 19 19 方法19 男 56 134 7.4
## 20 20 方法20 女 78 123 8.5
## 21 21 方法21 男 56 112 6.3
## 22 22 方法22 女 67 113 4.6
## 23 23 方法23 男 45 115 7.4
## 24 24 方法24 女 67 116 8.5
## 25 25 方法25 男 87 134 6.3
## 26 26 方法26 女 56 123 4.6
## 27 27 方法27 男 78 112 7.4
## 28 28 方法28 女 67 113 8.5
## 29 29 方法29 男 56 115 6.3
如果是rds
文件,這個(gè)也是R常用的格式,使用readRDS()
函數(shù)即可,也要注意文件路徑。
tmp <- readRDS(file = "tmp.rds")
tmp
## 編號(hào) 治療方式 性別 年齡 收縮壓 血糖
## 1 1 方法1 男 56 134 6.3
## 2 2 方法2 女 45 123 4.6
## 3 3 方法3 男 67 112 7.4
## 4 4 方法4 女 56 113 8.5
## 5 5 方法5 男 78 115 6.3
## 6 6 方法6 女 56 116 4.6
## 7 7 方法7 男 67 134 7.4
## 8 8 方法8 女 45 123 8.5
## 9 9 方法9 男 67 112 6.3
## 10 10 方法10 女 87 113 4.6
## 11 11 方法11 男 56 115 7.4
## 12 12 方法12 女 78 116 8.5
## 13 13 方法13 男 67 134 6.3
## 14 14 方法14 女 56 123 4.6
## 15 15 方法15 男 78 112 7.4
## 16 16 方法16 女 56 113 8.5
## 17 17 方法17 男 45 115 6.3
## 18 18 方法18 女 67 116 4.6
## 19 19 方法19 男 56 134 7.4
## 20 20 方法20 女 78 123 8.5
## 21 21 方法21 男 56 112 6.3
## 22 22 方法22 女 67 113 4.6
## 23 23 方法23 男 45 115 7.4
## 24 24 方法24 女 67 116 8.5
## 25 25 方法25 男 87 134 6.3
## 26 26 方法26 女 56 123 4.6
## 27 27 方法27 男 78 112 7.4
## 28 28 方法28 女 67 113 8.5
## 29 29 方法29 男 56 115 6.3
常見的就是這些,當(dāng)你掌握這些簡單的之后,你可以嘗試更加復(fù)雜的,以后肯定也會(huì)遇到,不過有了這些簡單的作為基礎(chǔ),相信你能更快的解決這類問題~
寫出文件(從R語言另存為其他格式)
寫出文件我覺得比讀取文件要簡單一點(diǎn),如果你實(shí)在不知道怎么保存,有個(gè)簡便方法,在這個(gè)地方:
直接點(diǎn)擊保存,就會(huì)在你當(dāng)前工作目錄產(chǎn)生一個(gè)RData
文件,下次直接load
或者雙擊即可快速打開你的所有東西?。?!
不太推薦直接保存為excel格式,建議使用csv格式。
如果是想把當(dāng)前文件保存為csv文件,可以使用以下函數(shù):
# 把tmp這個(gè)數(shù)據(jù)框保存為csv
write.csv(tmp, # 要保存的對(duì)象
file = "D:/111.csv", # 保存到哪里,保存為什么格式,.csv不要忘記!
quote = F, # 不加引號(hào)
row.names = F, # 行名
col.names = T # 列名
)
write.table(tmp,
file = "D:/111.csv", # 保存到哪里,保存為什么格式,.csv不要忘記!
sep = ",", # 必須指定分隔符!??!
quote = F, # 不加引號(hào)
row.names = F, # 行名
col.names = T # 列名
)
如果要保存為或者txt文件,可以使用以下函數(shù):
write.table(tmp,
file = "D:/222.txt",
sep = "\t", # 千萬別忘記指定分隔符??!
quote = F, # 不加引號(hào)
row.names = F, # 行名
col.names = T # 列名
)
如果要保存為rdata/Rdata/RData
文件,直接用save()
函數(shù),簡單方便,下次直接load即可,還可以同時(shí)保存多個(gè)對(duì)象!!
推薦大家平時(shí)保存時(shí)選擇rdata/Rdata/RData/rds
,方便,官方!
save(tmp,csv, # 同時(shí)保存多個(gè)對(duì)象
file = "tmp1.rdata")
保存為rds
格式:
saveRDS(tmp, file = "tmp.rds")
以上就是常見的數(shù)據(jù)讀取和寫出,最后再說一遍注意點(diǎn):
- 輸入法需要是英文狀態(tài)下的標(biāo)點(diǎn)符號(hào)!
- 文件路徑必須寫對(duì)!
- 注意不同文件的分隔符!
- 不同文件使用不同函數(shù)讀取/寫出!不要所有的格式都用一個(gè)!
- 如果碰到不知道的格式讀取,直接百度??!99.999%能解決你的問題!
希望大家以后再也不要碰到數(shù)據(jù)讀取問題!文章來源:http://www.zghlxwxcb.cn/news/detail-418304.html
本文首發(fā)于:醫(yī)學(xué)和生信筆記,完美觀看體驗(yàn)請(qǐng)至公眾號(hào)查看本文。
到了這里,關(guān)于初學(xué)者使用R語言讀取excel/csv/txt的注意事項(xiàng)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!