I am using R to calculate the mean values of a column in a file like so:
R
file1 = read.table(\"x01\")
mean(file1$V4)
However I have no experie
My solution is also similar to @jmsinger but you can specify the path to your files in the code itself and then calculate the mean like this :
filename <- system("ls /dir/",intern=TRUE)
for(i in 1:length(filename)){
file <- read.table(filename[i],header=TRUE) ## if you have headers in your files ##
mean <- mean(file$V4)
write.table(mean,file=paste("/dir",paste("mean",filename[i],sep="."),sep="/"))
##if you wish to write the means of all the files in seperate files rather than one.
}
hope this helps
This is similar to what @jmsigner has done, but with minor changes. For instance, writing to a file is done at the end. The code has not been tested.
out <- lapply(list.files(), FUN = function(x) {
m <- mean(read.table(x, header = TRUE)$V4)
return(m)
})
result <- do.call("cbind", out) #merge a list column-wise
# before writing, you can make column names pretty with colnames()
# e.g. colnames(result) <- c("x01", "x02")
write.table(result, file = "means.txt")
Assuming the columns are always named the same, you could do the following in R:
out.file <- 'means.txt'
for (i in list.files()) {
tmp.file <- read.table(i, header=TRUE) # Not sure if you have headers or not
tmp.mean <- mean(tmp.file1$V4)
write(paste0(i, "," tmp.mean), out.file, append=TRUE)
}
Or the same thing with more bash:
for i in $(ls *)
do
mean=$(Rscript -e "mean(read.table('$i', header=T)[, 'V4'])")
echo $i,$mean >> means.txt
done