tidy data 数据清理

Tidy data by Hadley Wickham

merge 合并两份数据,将 na 缺失值置0

d <- merge(data_a, data_b, by = 'id', all.x=TRUE)
d[is.na(d)] <- 0

将10万行以上的数据写入文件

用R把超过10万行的数组writeLines写文件每次都在10万行左右截断,要用options设置max.print参数,然后writeLines才能全写完。。。

myarrayLength = length(myarray)
options(max.print=myarrayLength+1)
myarrayFH <- file(myarrayFileName)
writeLines(myarray,myarrayFH)
close(myarrayFH)

apply 系列函数

这个帖子总结的很清楚:A brief introduction to “apply” in R

函数 作用
apply(m, 1, mean) 按行求均值
apply(m, 2, mean) 按列求均值
apply(m, 1:2, function(x) x/2) 每个元素都除以2
by(iris[, 1:4], Species, mean) 按Species分组,对iris的1-4列分别求均值【可想象成按班级分组,对4个科目的成绩分别求均值】
eapply(e, mean) 对e的子元素如e$a,e$b求均值
lapply(l, mean) 对l的子元素求如l$a,l$b求均值,返回与l等长的列表
sapply(l, mean) 对l的子元素求如l$a,l$b求均值,返回vector
vapply(l, fivenum, c(Min.=0, “1st Qu.”=0, Median=0, “3rd Qu.”=0, Max.=0)) 对l的子元素求如l$a,l$b求fivnum,返回matrix,其中行为fixnum的key,列为子元素的key
mapply(sum, l1$a, l1$b, l2$c, l2$d) 按顺序求 sum(l1$a[i]+l1$b[i]+l2$c[i]+l2$d[i]),其中i从1取到length(l1$a),最终拼成一个list
rapply(l, log2, how = “list”) 对l$a,l$b 每个元素求log2,以list形式返回
rapply(l, mean, how = “list”) 对l$a,l$b 求均值,以list形式返回
tapply(iris$Petal.Length, Species, mean) 按Species分组,对Petal.Length求均值


blog comments powered by Disqus

Published

20 November 2013

Tags