Standard deviation of one column when another column has the same value


 
Thread Tools Search this Thread
# 1  
Question Standard deviation of one column when another column has the same value

Hey guys, I am currently learning different bioinformatics applications, but I do not have all that much of a computer science background. Anyway, I have been asked to perform the mean and standard deviation of coverage for different transcript ID numbers. This involves a huge file with about 30 million lines. Basically, whenever there is the same value in one column/field, I want to get the mean and standard deviation for the other column/field for the corresponding lines. My input and desired output are below, but just imagine there being thousands to millions of different transcript IDs. I also want the output to include all the other fields from the original line for each calculation. The other fields do not follow any special pattern.

So far I have been using a lot of awk, so if you have an awk solution that would be great.

Also if you could give me a formula to next calculate the number of standard deviations each coverage value is away from the mean and put it in a separate field that would be even better, but I think I can figure this part out on my own.

Input
Code:
Transcript ID   Other field Other field Coverage         
1                        3               6             1
2                        4               8             2  
1                        5               10           3  
2                        6               12           6

Output
Code:
Transcript ID   Other field  Other field Coverage  Mean   Standard deviation
1                         3              6            1           2                  1
2                         4              8            2           4                  2
1                         5              10           3           2                  1 
2                        6               12           6           4                  2


Last edited by Scrutinizer; 06-28-2012 at 04:05 AM..
# 2  
Hope I got the maths right Smilie

Code:
awk 'BEGIN {
  ARGV[ARGC++] = ARGV[ARGC-1] 
  }  
NR == FNR && FNR > 1 {
  id[$1] += $4; cid[$1]++
  idq[$1] += $4 * $4
  next
  }
FNR == 1 {
  if (NR == FNR) next
  print $0, "Mean", "Standard deviation"
  next
  }  
{  
  $1 = $1
  print $0, id[$1]/cid[$1], sqrt(idq[$1]/cid[$1] - (id[$1]/cid[$1])**2)
  }' OFS='\t' infile

 

Previous Thread | Next Thread
Thread Tools Search this Thread
Search this Thread:
Advanced Search

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

SMA (Single Moving Average) and Standard Deviation

Hello Team, I am using the following awk script to calculate the SMA (Single Moving Average) for an specific period but now I would like to include the standard deviation output. Could you please help me to modify this awk shell script awk -F, -v points=5 ' { a = $2; ... (4 Replies)
Discussion started by: csierra
4 Replies

2. Shell Programming and Scripting

Output mean and standard deviation of a row

I have a file that looks that this: 820 890 530 1650 1600 1800 1850 1900 2270 1640 2300 1670 2080 2200 2350 1150 1630 2210 I would like to output the mean and standard deviation of each row so that my final output would look like this 820 890 530 746.667 155.849 1650 1600 1800... (5 Replies)
Discussion started by: kayak
5 Replies

3. Shell Programming and Scripting

calculating row-wise standard deviation using awk

Hi, I have a file containing 100,000 rows-by-120 columns and I need to compute for the standard deviation for each row. Any idea on how to calculate row-wise standard deviation using awk? My sample data looks like this: input data: 23 35 12 25 16 17 18 19 29 12 12 26 15 14 15 23 12 12... (2 Replies)
Discussion started by: ida1215
2 Replies

4. Shell Programming and Scripting

Finding standard deviation for all columns in a data file

Hi All, I want someone to modify the below script from this forum so that it can be used for all columns in the file( instead of only printing column 3 mean and standard deviation values). I don't know how to loop around all the columns. ... (3 Replies)
Discussion started by: ks_reddy
3 Replies

5. Shell Programming and Scripting

AWK script for standard deviation / root mean square deviation

I have a file with say 50 columns, each containing a whole lot of data. Each column contains data from a separate simulation, but each simulation is related to the data in the last (REFERENCE) column $50 I need to calculate the RMS deviation for each data line, i.e. column 1 relative to... (12 Replies)
Discussion started by: chrisjorg
12 Replies

6. Shell Programming and Scripting

Standard deviation in awk

Hi all, I need to find the standard deviation of each column of a dataset below for each hour. The data is given in 5 second intervals as shown below DATE TIME FRAC_DAYS_SINCE_JAN1 FRAC_HRS_SINCE_JAN1 EPOCH_TIME ... (11 Replies)
Discussion started by: gd9629
11 Replies

7. Shell Programming and Scripting

using awk to print average and standard deviation into a file

Hi I want to use awk to print avg and st deviation but it does not go into a file for column 1 only. I can do average and # of records but i cannot get st deviation. awk '{sum+=$1} END { print "Average = ",sum/NR}' thanks (1 Reply)
Discussion started by: phil_heath
1 Replies

8. UNIX for Dummies Questions & Answers

Calculating the Standard Deviation for a column

Hi all, I want to calculate the standard deviation for a column (happens to be column 3). Does any know of simple awk script to do this? Thanks (1 Reply)
Discussion started by: kylle345
1 Replies

9. Shell Programming and Scripting

Mean and Standard deviation

Hi all, I am new to shell scripting and wanna calculate the mean and standard deviation using shell programming. I have a file with letters that are repeating and their corresponding duration a 0.32 a 0.89 aa 0.34 aa 0.23 au 0.012 au 0.26... (4 Replies)
Discussion started by: lakshmikanth.pg
4 Replies

10. Shell Programming and Scripting

Script for finding standard deviation

I have a CSV file that looks like 0,0,0,0,1,0,1,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0 10,11,7,0,4,12,2,3,7,0,11,3,12,4,0,5,5,4,5,0,8,6,12,0,9,3,3,0,2,7,8 19,11,7,0,4,14,16,10,8,2,13,7,15,6,0,76,6,4,10,0,18,10,17,1,11,3,3,0,9,9,8... (7 Replies)
Discussion started by: RJ17
7 Replies

Featured Tech Videos