My code is listed below, I'm trying to figure out what the problem is and what I can do to fix it. The output i'm getting is:
Name Low High Average
0 0 0.00
The correct output I want is the name of the Assignment, the lowest score and highest score obtained, and the Average Score under each column. Can Someone help and point me in the right direction
awk 'BEGIN{
FS = " "
print "Name Low High Average"
i=0
}
{
if(i==0){
i+=1
}
else{
if(low[$3]<$4)
low[$3] = $4
if(high[$3]>$4 || high[$3]==0)
high[$3] = $4
avg[$3] += $4
cnt[$3] += 1
}
}
END{
for(k in low){
avg[k] = avg[k]/cnt[k]
printf "%s %d %d %.2f ",k, low[k], high[k], avg[k]
}
}' ./Lab03-data.csv
Hmmm...
Just a guess (without seeing your sample file)....
you're processing a .csv
file, but you're setting your FS=" "
?
Heres the sample file:
should i use -f or -F in replace of FS?
Student Catehory Assignment Score Possible Chelsey Homework H01 90 100 Chelsey Homework H02 89 100 Chelsey Lab L01 91 100 Chelsey Lab L02 100 100 Chelsey Quiz Q01 100 100 Chelsey Quiz Q02 100 100 Chelsey Final FINAL 82 100 Sam Homework H06 97 100 Sam Homework H07 52 100 Sam Lab L06 0 100 Sam Lab L07 0 100 Sam Quiz Q06 95 100 Sam Quiz Q07 68 100 Sam Final FINAL 58 100 Andrew Homework H06 58 100 Andrew Homework H07 52 100 Andrew Lab L01 87 100 Andrew Lab L02 45 100 Andrew Quiz Q06 94 100 Andrew Quiz Q07 58 100 Andrew Final FINAL 99 100 Ava Homework H06 84 100 Ava Homework H07 55 100 Ava Lab L01 66 100 Ava Lab L02 77 100 Ava Quiz Q06 77 100 Ava Quiz Q07 88 100 Ava Final FINAL 99 100 Shane Homework H06 80 100 Shane Homework H07 90 100 Shane Lab L01 90 100 Shane Lab L02 0 100 Shane Quiz Q05 80 100 Shane Quiz Q06 80 100 Shane Final FINAL 90 100
rdrtx1
February 21, 2019, 2:40pm
4
Maybe try massaging the file before the awk
. Using the sample posted:
tr " " '
' < sample_file | awk '
NR<6 {next}
{printf $0 FS}
!(NR % 5) {print _}
' | awk ...(your awk)...
So just to be clear, I insert the coding you provided in front of mine and insert my coding where it says your awk correct?
I doubt your sample file is what you actually have.
Please check the original sample from post #3 edited by me using the code tags.
If it's not what you actually have repost using the code tags.
RudiC
February 21, 2019, 5:11pm
7
To cast your file into single line records, try
$ paste -sd"\t\t\t\t\n" <(tr -s ' ' $'\n' <file)
Student Catehory Assignment Score Possible
Chelsey Homework H01 90 100
Chelsey Homework H02 89 100
Chelsey Lab L01 91 100
Chelsey Lab L02 100 100
.
.
.
EDIT: How far would this get you:
paste -sd"\t\t\t\t\n" <(tr -s ' ' $'\n' <file) | awk '
BEGIN {print "Name\tLow\tHigh\tAverage"
}
NR == 1 {next
}
!($1 in MIN) {MIN[$1] = 1E100
}
{if (MIN[$1]>$4) MIN[$1] = $4
if (MAX[$1]<$4) MAX[$1] = $4
SUM[$1] += $4
CNT[$1]++
}
END {for (m in MAX) print m, MIN[m], MAX[m], SUM[m]/CNT[m]
}
' OFS="\t"
Name Low High Average
Sam 0 97 52.8571
Chelsey 82 100 93.1429
Andrew 45 99 70.4286
Shane 0 90 72.8571
Ava 55 99 78
Student Catehory Assignment Score Possible Chelsey Homework H01 90 100 Chelsey Homework H02 89 100 Chelsey Homework H03 77 100 Chelsey Homework H04 80 100 Chelsey Homework H05 82 100 Chelsey Homework H06 84 100 Chelsey Homework H07 86 100 Chelsey Lab L01 91 100 Chelsey Lab L02 100 100 Chelsey Lab L03 100 100 Chelsey Lab L04 100 100 Chelsey Lab L05 96 100 Chelsey Lab L06 80 100 Chelsey Lab L07 81 100 Chelsey Quiz Q01 100 100 Chelsey Quiz Q02 100 100 Chelsey Quiz Q03 98 100 Chelsey Quiz Q04 93 100 Chelsey Quiz Q05 99 100 Chelsey Quiz Q06 88 100 Chelsey Quiz Q07 100 100 Chelsey Final FINAL 82 100 Chelsey Survey WS 5 5 Sam Homework H01 19 100 Sam Homework H02 82 100 Sam Homework H03 95 100 Sam Homework H04 46 100 Sam Homework H05 82 100 Sam Homework H06 97 100 Sam Homework H07 52 100 Sam Lab L01 41 100 Sam Lab L02 85 100 Sam Lab L03 99 100 Sam Lab L04 99 100 Sam Lab L05 0 100 Sam Lab L06 0 100 Sam Lab L07 0 100 Sam Quiz Q01 91 100 Sam Quiz Q02 85 100 Sam Quiz Q03 33 100 Sam Quiz Q04 64 100 Sam Quiz Q05 54 100 Sam Quiz Q06 95 100 Sam Quiz Q07 68 100 Sam Final FINAL 58 100 Sam Survey WS 5 5 Andrew Homework H01 25 100 Andrew Homework H02 47 100 Andrew Homework H03 85 100 Andrew Homework H04 65 100 Andrew Homework H05 54 100 Andrew Homework H06 58 100 Andrew Homework H07 52 100 Andrew Lab L01 87 100 Andrew Lab L02 45 100 Andrew Lab L03 92 100 Andrew Lab L04 48 100 Andrew Lab L05 42 100 Andrew Lab L06 99 100 Andrew Lab L07 86 100 Andrew Quiz Q01 25 100 Andrew Quiz Q02 84 100 Andrew Quiz Q03 59 100 Andrew Quiz Q04 93 100 Andrew Quiz Q05 85 100 Andrew Quiz Q06 94 100 Andrew Quiz Q07 58 100 Andrew Final FINAL 99 100 Andrew Survey WS 5 5 Ava Homework H01 55 100 Ava Homework H02 95 100 Ava Homework H03 84 100 Ava Homework H04 74 100 Ava Homework H05 95 100 Ava Homework H06 84 100 Ava Homework H07 55 100 Ava Lab L01 66 100 Ava Lab L02 77 100 Ava Lab L03 88 100 Ava Lab L04 99 100 Ava Lab L05 55 100 Ava Lab L06 66 100 Ava Lab L07 77 100 Ava Quiz Q01 88 100 Ava Quiz Q02 99 100 Ava Quiz Q03 44 100 Ava Quiz Q04 55 100 Ava Quiz Q05 66 100 Ava Quiz Q06 77 100 Ava Quiz Q07 88 100 Ava Final FINAL 99 100 Ava Survey WS 5 5 Shane Homework H01 50 100 Shane Homework H02 60 100 Shane Homework H03 70 100 Shane Homework H04 60 100 Shane Homework H05 70 100 Shane Homework H06 80 100 Shane Homework H07 90 100 Shane Lab L01 90 100 Shane Lab L02 0 100 Shane Lab L03 100 100 Shane Lab L04 50 100 Shane Lab L05 40 100 Shane Lab L06 60 100 Shane Lab L07 80 100 Shane Quiz Q01 70 100 Shane Quiz Q02 90 100 Shane Quiz Q03 100 100 Shane Quiz Q04 100 100 Shane Quiz Q05 80 100 Shane Quiz Q06 80 100 Shane Quiz Q07 80 100 Shane Final FINAL 90 100 Shane Survey WS 5 5 body,div,table,thead,tbody,tfoot,tr,th,td,p { font-family:"Liberation Sans"; font-size:x-small } a.comment-indicator:hover + comment { background:#ffd; position:absolute; display:block; border:1px solid black; padding:0.5em; } a.comment-indicator { background:red; display:inline-block; border:1px solid black; width:0.5em; height:0.5em; } comment { display:none; }
--- Post updated at 10:49 PM ---
Student Catehory Assignment Score Possible Chelsey Homework H01 90 100 Chelsey Homework H02 89 100 Chelsey Homework H03 77 100 Chelsey Homework H04 80 100 Chelsey Homework H05 82 100 Chelsey Homework H06 84 100 Chelsey Homework H07 86 100 Chelsey Lab L01 91 100 Chelsey Lab L02 100 100 Chelsey Lab L03 100 100 Chelsey Lab L04 100 100 Chelsey Lab L05 96 100 Chelsey Lab L06 80 100 Chelsey Lab L07 81 100 Chelsey Quiz Q01 100 100 Chelsey Quiz Q02 100 100 Chelsey Quiz Q03 98 100 Chelsey Quiz Q04 93 100 Chelsey Quiz Q05 99 100 Chelsey Quiz Q06 88 100 Chelsey Quiz Q07 100 100 Chelsey Final FINAL 82 100 Chelsey Survey WS 5 5 Sam Homework H01 19 100 Sam Homework H02 82 100 Sam Homework H03 95 100 Sam Homework H04 46 100 Sam Homework H05 82 100 Sam Homework H06 97 100 Sam Homework H07 52 100 Sam Lab L01 41 100 Sam Lab L02 85 100 Sam Lab L03 99 100 Sam Lab L04 99 100 Sam Lab L05 0 100 Sam Lab L06 0 100 Sam Lab L07 0 100 Sam Quiz Q01 91 100 Sam Quiz Q02 85 100 Sam Quiz Q03 33 100 Sam Quiz Q04 64 100 Sam Quiz Q05 54 100 Sam Quiz Q06 95 100 Sam Quiz Q07 68 100 Sam Final FINAL 58 100 Sam Survey WS 5 5 Andrew Homework H01 25 100 Andrew Homework H02 47 100 Andrew Homework H03 85 100 Andrew Homework H04 65 100 Andrew Homework H05 54 100 Andrew Homework H06 58 100 Andrew Homework H07 52 100 Andrew Lab L01 87 100 Andrew Lab L02 45 100 Andrew Lab L03 92 100 Andrew Lab L04 48 100 Andrew Lab L05 42 100 Andrew Lab L06 99 100 Andrew Lab L07 86 100 Andrew Quiz Q01 25 100 Andrew Quiz Q02 84 100 Andrew Quiz Q03 59 100 Andrew Quiz Q04 93 100 Andrew Quiz Q05 85 100 Andrew Quiz Q06 94 100 Andrew Quiz Q07 58 100 Andrew Final FINAL 99 100 Andrew Survey WS 5 5 Ava Homework H01 55 100 Ava Homework H02 95 100 Ava Homework H03 84 100 Ava Homework H04 74 100 Ava Homework H05 95 100 Ava Homework H06 84 100 Ava Homework H07 55 100 Ava Lab L01 66 100 Ava Lab L02 77 100 Ava Lab L03 88 100 Ava Lab L04 99 100 Ava Lab L05 55 100 Ava Lab L06 66 100 Ava Lab L07 77 100 Ava Quiz Q01 88 100 Ava Quiz Q02 99 100 Ava Quiz Q03 44 100 Ava Quiz Q04 55 100 Ava Quiz Q05 66 100 Ava Quiz Q06 77 100 Ava Quiz Q07 88 100 Ava Final FINAL 99 100 Ava Survey WS 5 5 Shane Homework H01 50 100 Shane Homework H02 60 100 Shane Homework H03 70 100 Shane Homework H04 60 100 Shane Homework H05 70 100 Shane Homework H06 80 100 Shane Homework H07 90 100 Shane Lab L01 90 100 Shane Lab L02 0 100 Shane Lab L03 100 100 Shane Lab L04 50 100 Shane Lab L05 40 100 Shane Lab L06 60 100 Shane Lab L07 80 100 Shane Quiz Q01 70 100 Shane Quiz Q02 90 100 Shane Quiz Q03 100 100 Shane Quiz Q04 100 100 Shane Quiz Q05 80 100 Shane Quiz Q06 80 100 Shane Quiz Q07 80 100 Shane Final FINAL 90 100 Shane Survey WS 5 5 body,div,table,thead,tbody,tfoot,tr,th,td,p { font-family:"Liberation Sans"; font-size:x-small } a.comment-indicator:hover + comment { background:#ffd; position:absolute; display:block; border:1px solid black; padding:0.5em; } a.comment-indicator { background:red; display:inline-block; border:1px solid black; width:0.5em; height:0.5em; } comment { display:none; }
Hi Marquez3105,
What we need you to put between the CODE tags is the contents of the file you are trying to process. We do not want you to be setting x-small font size, your choice of font family, your other WYSIWIG formatting to make the file contents look pretty; we just want the contents of the file.
Please try again without all of the WYSIWIG formatting that is making it impossible for us to figure out what data you are really trying to process.
Hi Marquez3105,
What we need you to put between the CODE tags is the contents of the file you are trying to process. We do not want you to be setting x-small font size, your choice of font family, your other WYSIWIG formatting to make the file contents look pretty; we just want the contents of the file.
Please try again without all of the WYSIWIG formatting that is making it impossible for us to figure out what data you are really trying to process.
I had similar issues in the past when using "Enhanced Interface" editor when posting.
Marquez3105,
go to UserCP->EditOptions
and under Message Editor Interface
chapter and under Message Editor Interface:
choose Standard Editor - Extra Formatting Control
.
Then Save Changes
when done.
Then re-post your sample data within code tags.
Hope it helps
RudiC
February 22, 2019, 4:40am
11
Try also (no file preformatting needed):
awk '
BEGIN {print "Name\tLow\tHigh\tAverage"
}
{for (i=6; i<NF; i+=5) {if (!($i in MIN)) MIN[$i] = 1E100
if (MIN[$i]>$(i+3)) MIN[$i] = $(i+3)
if (MAX[$i]<$(i+3)) MAX[$i] = $(i+3)
SUM[$i] += $(i+3)
CNT[$i]++
}
}
END {for (m in MAX) print m, MIN[m], MAX[m], SUM[m]/CNT[m]
}
' OFS="\t" file