R 读取,筛选,保存数据

1.了解read.table
可以从带分隔符的文本文件导入数据,可以读入csv,txt等格式文件,并将其保存成数据框
read.table(file, header = FALSE, sep = "", quote = "\"'", dec = ".", numerals = c("allow.loss", "warn.loss", "no.loss"),row.names, col.names, as.is = !stringsAsFactors,na.strings = "NA", colClasses = NA, nrows = -1,skip = 0, check.names = TRUE, fill = !blank.lines.skip,strip.white = FALSE, blank.lines.skip = TRUE,comment.char = "#",allowEscapes = FALSE, flush = FALSE,stringsAsFactors = default.stringsAsFactors(), fileEncoding = "", encoding = "unknown", text, skipNul = FALSE)

file:要读取的文件名

header :默认值是FALSE,当header = T,会把文件第一行当作表头,为FALSE的时候,第一行内容会被读入到数据中

sep: 默认值为空。判断文件是以什么分隔符来分隔行内数据,比如,csv是以逗号分隔,sep =",";以制表符分分隔的txt,sep = "\t"。当然你也可以根据自己文件情况选择分隔符

stringsAsFactors:默认情况下字符型变量转换成因子,stringsAsFactors = F,可以停止这种转变

quote:用于指定包围字符数据的符号,默认值为'或者"。

dec:指明数据文件中的小数点

numerals:字符串类型。用于指定文件中的数字转换为双精度数据时丢失精度的情况下如何进行转换。这种情况发生于一个数字的位数超出double可以存储的位数时。有3种选择:

numerals = "allow.loss" :该值为默认值。允许丢失精度。numerals = "warn.loss":给出一个丢失精度的警告消息,并与numerals="allow.loss"一样允许丢失精度。

numerals = "no.loss":当发生丢失精度时,将不会被转换为数字,根据as.is参数的设置,而转换为因子(factor)或则缺省情况下转换为字符串。

更多参数意义可以在R中输入?read.table查看。http://www.biye5u.com/article/r/2017/6348.html也可以点击这个文章查看别人翻译好的
2.read.table操作实例
读取txt文件,并筛选出所有Benjamini< 0.05的行内容
txt文件格式:
 
#R代码示例 读取txt文件
read.table("Z0VSZ30.txt",header = F,sep = "\t")#注意这里的header=F,仔细观察下图第一行的名字
#运行后会有warning:In read.table("Z0VSZ30.txt", header = F, sep = "\t") :
incomplete final line found by readTableHeader on 'Z0VSZ30.txt'是因为文件最后一行没有换行,手动在文件里最后一行enter一下就可以了
读取后的格式
 
2.1筛选出符合要求的数据
which函数
但是筛选出来得到的数据只有前三列,而我想得到的符合条件的整行
方法二:dplyr包里的filter函数
filter:
subset:For data frames, the subset argument works on the rows. Note that subset will be evaluated in the data frame, so columns can be referred to (by name) as variables in the expression (see the examples).
data<-read.table('Z0VSZ30up.txt',header = T,sep = "\t")

#筛选数据:法1subset output1<-data.frame(subset(data,Benjamini< 0.05)) #法二:filter library('dplyr') output1<-data.frame(dplyr::filter(data,Benjamini< 0.05)) #输出并选择保存格式 write.table(output1,file = 'output1.txt',sep = '\t')#因为已经选定了工作环境,所以这里file不用写路径 test<-read.table('output1.txt',header = T,sep = '\t') data<-read.table('Z0VSZ30up.txt',header = T,sep = "\t")
3.数据保存
#保存为文本
write.table(output1,file = 'output1.txt',sep = '\t')
#保存为逗号分割文本
write.csv(output1,file = 'output1.csv')
#保存为R格式文件
save(output1,file = 'output1.RData')

猜你喜欢

转载自www.cnblogs.com/411learn-forever/p/10015749.html