R語(yǔ)言:批量讀取數(shù)據(jù)框和"NA"頻數(shù)統(tǒng)計(jì)

導(dǎo)讀

需求:1. 讀取一個(gè)目錄下的所有數(shù)據(jù)表;2. 統(tǒng)計(jì)特定元素的非"NA"的頻數(shù),并匯總到一個(gè)表中匾浪。方法:使用R語(yǔ)言read.table讀取數(shù)據(jù)表昼伴,list保存數(shù)據(jù)表噩咪,sum統(tǒng)計(jì)元素頻數(shù)弄慰,write.table保存結(jié)果序芦、for循環(huán)批量操作每一個(gè)數(shù)據(jù)表等等。

一蔬咬、查看數(shù)據(jù)表

Linux中查看文件信息

ls -alh  
# 查看所有文件名,如下:

總用量 3.9M
drwxrwxr-x 2 cheng WST 4.0K 10月 18 15:46 .
drwxrwxr-x 8 cheng WST 4.0K 10月 16 16:12 ..
-rw-rw-r-- 1 cheng WST 197K 10月 16 11:00 bin.25.tsv
-rw-rw-r-- 1 cheng WST 122K 10月 16 11:00 bin.33.tsv
-rw-rw-r-- 1 cheng WST 176K 10月 16 11:00 bin.36.tsv
-rw-rw-r-- 1 cheng WST 153K 10月 16 11:00 bin.37.tsv
-rw-rw-r-- 1 cheng WST 260K 10月 16 11:00 bin.38.tsv
-rw-rw-r-- 1 cheng WST 253K 10月 16 11:00 bin.39.tsv
-rw-rw-r-- 1 cheng WST 217K 10月 16 11:00 bin.43.tsv
-rw-rw-r-- 1 cheng WST  81K 10月 16 11:00 bin.46.tsv
-rw-rw-r-- 1 cheng WST 228K 10月 16 11:00 bin.50.tsv
-rw-rw-r-- 1 cheng WST 114K 10月 16 11:00 bin.56.tsv
-rw-rw-r-- 1 cheng WST 237K 10月 16 11:00 bin.58.tsv
-rw-rw-r-- 1 cheng WST 152K 10月 16 11:00 bin.61.tsv
-rw-rw-r-- 1 cheng WST 238K 10月 16 11:00 bin.63.tsv
-rw-rw-r-- 1 cheng WST 144K 10月 16 11:00 bin.65.tsv
-rw-rw-r-- 1 cheng WST 102K 10月 16 11:00 bin.66.tsv
-rw-rw-r-- 1 cheng WST 371K 10月 16 11:00 bin.67.tsv
-rw-rw-r-- 1 cheng WST  87K 10月 16 11:00 bin.71.tsv
-rw-rw-r-- 1 cheng WST 198K 10月 16 11:00 bin.81.tsv
-rw-rw-r-- 1 cheng WST 114K 10月 16 11:00 bin.89.tsv
-rw-rw-r-- 1 cheng WST 171K 10月 16 11:00 bin.91.tsv
-rw-rw-r-- 1 cheng WST 279K 10月 16 11:00 bin.94.tsv

head bin.25.tsv  
# 查看文件格式沐寺,如下:

locus_tag   ftype   length_bp   gene    EC_number   COG product
LBILEGMC_00001  CDS 324             hypothetical protein
LBILEGMC_00002  CDS 2589    tmoS_1  2.7.13.3        Sensor histidine kinase TmoS
LBILEGMC_00003  CDS 852             hypothetical protein
LBILEGMC_00004  CDS 1164                hypothetical protein
LBILEGMC_00005  CDS 1356                hypothetical protein
LBILEGMC_00006  CDS 975     2.5.1.10    COG0142 (2E,6E)-farnesyl diphosphate synthase
LBILEGMC_00007  CDS 708             hypothetical protein
LBILEGMC_00008  CDS 780 dtd3_1  3.1.1.96        D-aminoacyl-tRNA deacylase
LBILEGMC_00009  CDS 699 guaA_1  6.3.5.2     GMP synthase [glutamine-hydrolyzing]

二林艘、讀取文件名

list.files:讀取工作目錄下所有文件名
strsplit:切割字符串
as.character:將strsplit結(jié)果【list】轉(zhuǎn)成字符【character】
for循環(huán):批處理

files=list.files(pattern="bin.*.tsv") 
# 讀取所有文件的全名,含后綴

name=vector()
for(i in 1:length(files))
{
    name[i]=as.character(strsplit(files[i], split=".tsv"))
    # 批量提取文件名
}

name
# 查看文件名混坞,如下:

 [1] "bin.25" "bin.33" "bin.36" "bin.37" "bin.38" "bin.39" "bin.43" "bin.46"
 [9] "bin.50" "bin.56" "bin.58" "bin.61" "bin.63" "bin.65" "bin.66" "bin.67"
[17] "bin.71" "bin.81" "bin.89" "bin.91" "bin.94"

length(name)
# 一共21個(gè)文件
[1] 21

三狐援、讀取數(shù)據(jù)表/框

for循環(huán):批處理
list:用列表保存所有數(shù)據(jù)表信息
read.table:讀表函數(shù)
sep='\t':制表符分隔【參數(shù)】
na.string="":空為NA【參數(shù)】
stringsAsFactors=F:不把字符串的列辨認(rèn)成因子【參數(shù)】
header=T:第一行為表頭【參數(shù)】
quote="":無(wú)引號(hào)【參數(shù)】
comment.char="":無(wú)注釋【參數(shù)】
\color{green}{讀表總遇到莫名其妙的問(wèn)題時(shí),多加幾個(gè)參數(shù)試試吧究孕。}

ml=list()
# 創(chuàng)建一個(gè)新列表啥酱,存放每個(gè)數(shù)據(jù)框的數(shù)據(jù)。

for(i in 1:length(files))
{
    ml[[i]]=read.table(files[i], sep='\t', na.string="", stringsAsFactors=F, header=T, quote="", comment.char="")
    # 讀取所有數(shù)據(jù)框
}

length(ml)
# 一共21個(gè)
[1] 21

head(ml[[1]])
# 挑一個(gè)檢查厨诸,沒(méi)啥毛病镶殷,如下:

       locus_tag ftype length_bp   gene EC_number     COG
1 LBILEGMC_00001   CDS       324   <NA>      <NA>    <NA>
2 LBILEGMC_00002   CDS      2589 tmoS_1  2.7.13.3    <NA>
3 LBILEGMC_00003   CDS       852   <NA>      <NA>    <NA>
4 LBILEGMC_00004   CDS      1164   <NA>      <NA>    <NA>
5 LBILEGMC_00005   CDS      1356   <NA>      <NA>    <NA>
6 LBILEGMC_00006   CDS       975   <NA>  2.5.1.10 COG0142
                                product
1                  hypothetical protein
2          Sensor histidine kinase TmoS
3                  hypothetical protein
4                  hypothetical protein
5                  hypothetical protein
6 (2E,6E)-farnesyl diphosphate synthase

四、統(tǒng)計(jì)“gene”非"NA"的數(shù)量

head(ml[[1]]["gene"])
# 查看需要統(tǒng)計(jì)的信息微酬,計(jì)算非<NA>的基因數(shù)量:

    gene
1   <NA>
2 tmoS_1
3   <NA>
4   <NA>
5   <NA>
6   <NA>

gene_num=vector()
# 創(chuàng)建一個(gè)新向量绘趋,存放列表中每個(gè)數(shù)據(jù)框的gene數(shù)量。

for(i in 1:length(files))
{
    gene_num[i]=lengths(ml[[i]]["gene"])-sum(is.na(ml[[i]]["gene"]))
    # 基因總數(shù)/BIN:
    # is.na判斷是否為NA
    # gene數(shù)/數(shù)據(jù)框=gene列長(zhǎng)度/數(shù)據(jù)框-NA數(shù)/數(shù)據(jù)框
}

length(gene_num)
# 每個(gè)數(shù)據(jù)框一個(gè)gene數(shù)
[1] 21

gene_num
# 查看每個(gè)數(shù)據(jù)框的“gene”數(shù)量颗管,如下:

 [1] 1559 1303 1755 1319 2054 2636 2372  806 1972 1023 1754 1445 2276 1287  896
[16] 3349  839 1593 1016 1750 2397

五陷遮、結(jié)果合并、保存

data.frame:可合并多個(gè)向量成表
write.table:保存數(shù)據(jù)表/框
sep="\t":制表符分隔【參數(shù)】
row.names=F:去行標(biāo)【參數(shù)】
quote=F:去引號(hào)【參數(shù)】

name
# 查看:

 [1] "bin.25" "bin.33" "bin.36" "bin.37" "bin.38" "bin.39" "bin.43" "bin.46"
 [9] "bin.50" "bin.56" "bin.58" "bin.61" "bin.63" "bin.65" "bin.66" "bin.67"
[17] "bin.71" "bin.81" "bin.89" "bin.91" "bin.94"

gene_num
# 查看:

 [1] 1559 1303 1755 1319 2054 2636 2372  806 1972 1023 1754 1445 2276 1287  896
[16] 3349  839 1593 1016 1750 2397

result=data.frame(name, gene_num)
# 合并
result
# 查看:

     name gene_num
1  bin.25     1559
2  bin.33     1303
3  bin.36     1755
4  bin.37     1319
5  bin.38     2054
6  bin.39     2636
7  bin.43     2372
8  bin.46      806
9  bin.50     1972
10 bin.56     1023
11 bin.58     1754
12 bin.61     1445
13 bin.63     2276
14 bin.65     1287
15 bin.66      896
16 bin.67     3349
17 bin.71      839
18 bin.81     1593
19 bin.89     1016
20 bin.91     1750
21 bin.94     2397

write.table(result, file="gene.tsv", sep="\t", row.names=F, quote=F)
# 保存結(jié)果到當(dāng)前工作目錄

Linux中查看gene.tsv文件

cat gene.tsv 
# 結(jié)果沒(méi)毛病垦江,如下:

name    gene_num
bin.25  1559
bin.33  1303
bin.36  1755
bin.37  1319
bin.38  2054
bin.39  2636
bin.43  2372
bin.46  806
bin.50  1972
bin.56  1023
bin.58  1754
bin.61  1445
bin.63  2276
bin.65  1287
bin.66  896
bin.67  3349
bin.71  839
bin.81  1593
bin.89  1016
bin.91  1750
bin.94  2397

\color{green}{????原創(chuàng)文章帽馋,碼字不易,轉(zhuǎn)載請(qǐng)注明出處????}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市绽族,隨后出現(xiàn)的幾起案子姨涡,更是在濱河造成了極大的恐慌,老刑警劉巖项秉,帶你破解...
    沈念sama閱讀 218,682評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件绣溜,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡娄蔼,警方通過(guò)查閱死者的電腦和手機(jī)怖喻,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,277評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)岁诉,“玉大人锚沸,你說(shuō)我怎么就攤上這事√檠ⅲ” “怎么了哗蜈?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,083評(píng)論 0 355
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)坠韩。 經(jīng)常有香客問(wèn)我距潘,道長(zhǎng),這世上最難降的妖魔是什么只搁? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,763評(píng)論 1 295
  • 正文 為了忘掉前任音比,我火速辦了婚禮,結(jié)果婚禮上氢惋,老公的妹妹穿的比我還像新娘洞翩。我一直安慰自己,他們只是感情好焰望,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,785評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布骚亿。 她就那樣靜靜地躺著,像睡著了一般熊赖。 火紅的嫁衣襯著肌膚如雪来屠。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,624評(píng)論 1 305
  • 那天震鹉,我揣著相機(jī)與錄音的妖,去河邊找鬼。 笑死足陨,一個(gè)胖子當(dāng)著我的面吹牛嫂粟,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播墨缘,決...
    沈念sama閱讀 40,358評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼星虹,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼零抬!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起宽涌,我...
    開(kāi)封第一講書(shū)人閱讀 39,261評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤平夜,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后卸亮,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體忽妒,經(jīng)...
    沈念sama閱讀 45,722評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,900評(píng)論 3 336
  • 正文 我和宋清朗相戀三年兼贸,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了段直。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,030評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡溶诞,死狀恐怖鸯檬,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情螺垢,我是刑警寧澤喧务,帶...
    沈念sama閱讀 35,737評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站枉圃,受9級(jí)特大地震影響功茴,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜孽亲,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,360評(píng)論 3 330
  • 文/蒙蒙 一坎穿、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧墨林,春花似錦赁酝、人聲如沸犯祠。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,941評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)衡载。三九已至搔耕,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間痰娱,已是汗流浹背弃榨。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,057評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留梨睁,地道東北人鲸睛。 一個(gè)月前我還...
    沈念sama閱讀 48,237評(píng)論 3 371
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像坡贺,于是被迫代替她去往敵國(guó)和親官辈。 傳聞我的和親對(duì)象是個(gè)殘疾皇子箱舞,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,976評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • 學(xué)習(xí)目標(biāo) 演示如何從現(xiàn)有的數(shù)據(jù)結(jié)構(gòu)中取子集肺魁,合并及創(chuàng)建新數(shù)據(jù)集电湘。 導(dǎo)出數(shù)據(jù)表和圖以供在R環(huán)境以外使用。 1.數(shù)據(jù)框...
    小潔忘了怎么分身閱讀 4,479評(píng)論 1 10
  • R語(yǔ)言與數(shù)據(jù)挖掘:公式鹅经;數(shù)據(jù)寂呛;方法 R語(yǔ)言特征 對(duì)大小寫(xiě)敏感 通常,數(shù)字瞬雹,字母昧谊,. 和 _都是允許的(在一些國(guó)家還...
    __一蓑煙雨__閱讀 1,638評(píng)論 0 5
  • 生信人應(yīng)這樣學(xué)R語(yǔ)言-生信技能樹(shù)視頻 一、介紹R語(yǔ)言及Rstudio 1酗捌、R是用于統(tǒng)計(jì)分析呢诬、繪圖的語(yǔ)言和操作環(huán)境。...
    看遠(yuǎn)方的星閱讀 10,375評(píng)論 3 74
  • 幫助與基礎(chǔ)help(topic) 查看關(guān)于topic的幫助文檔?topic 同上help.search("topi...
    Davey1220閱讀 3,315評(píng)論 0 9
  • 久違的晴天胖缤,家長(zhǎng)會(huì)尚镰。 家長(zhǎng)大會(huì)開(kāi)好到教室時(shí),離放學(xué)已經(jīng)沒(méi)多少時(shí)間了哪廓。班主任說(shuō)已經(jīng)安排了三個(gè)家長(zhǎng)分享經(jīng)驗(yàn)狗唉。 放學(xué)鈴聲...
    飄雪兒5閱讀 7,523評(píng)論 16 22