[R] Getting minimum value of a column according a factor column of a dataframe

Rui Barradas ru|pb@rr@d@@ @end|ng |rom @@po@pt
Wed Aug 24 18:54:55 CEST 2022


Hello,

Here are two options, the 1st outputs a vector, the 2nd a data.frame.


x<-'41003 81 1 19 0.16 7.17 2.5
41003 77 9 22 0.197 6.8 2.2
41003 79 7 28 0.21 4.7 6.2
41005 79 8 17 0.21 5.5 7.2
41005 80 10 30 0.21 6.84 2.6
41005 80 12 20 0.21 6.84 2.4
41005 79 6 14 0.217 5.61 3.55
41009 79 2 21 0.218 5.56 4.04
41009 79 5 27 0.218 6.4 3.12
41009 80 11 29 0.22 6.84 2.8
41009 78 5 28 0.232 6 3.2
41009 81 8 20 0.233 6.39 1.6
41009 79 9 30 0.24 5.6 7.5
41017 79 10 20 0.24 5.3 7.1
41017 80 7 30 0.24 6.73 2.6'
df1 <- read.table(textConnection(x))
names(df1) <- scan(what = character(),
                    text = 'Code Y M D Q N O')
df1$Code <- factor(df1$Code)

# 1st option
with(df1, tapply(Q, Code, min))
#  41003 41005 41009 41017
#  0.160 0.210 0.218 0.240

# 2nd option
aggregate(Q ~ Code, df1, min)
#     Code     Q
#  1 41003 0.160
#  2 41005 0.210
#  3 41009 0.218
#  4 41017 0.240


Hope this helps,

Rui Barradas

Às 08:44 de 24/08/2022, javad bayat escreveu:
> Dear all;
> I am trying to get the minimum value of a column based on a factor column
> of the same data frame. My data frame is like the below:
>         Code               Y               M                D
>   Q
>       N              O
> 41003 81 1 19 0.16 7.17 2.5
> 41003 77 9 22 0.197 6.8 2.2
> 41003 79 7 28 0.21 4.7 6.2
> 41005 79 8 17 0.21 5.5 7.2
> 41005 80 10 30 0.21 6.84 2.6
> 41005 80 12 20 0.21 6.84 2.4
> 41005 79 6 14 0.217 5.61 3.55
> 41009 79 2 21 0.218 5.56 4.04
> 41009 79 5 27 0.218 6.4 3.12
> 41009 80 11 29 0.22 6.84 2.8
> 41009 78 5 28 0.232 6 3.2
> 41009 81 8 20 0.233 6.39 1.6
> 41009 79 9 30 0.24 5.6 7.5
> 41017 79 10 20 0.24 5.3 7.1
> 41017 80 7 30 0.24 6.73 2.6
> 
> I want to get the minimum value of the "Q" column with the whole row
> values, according to the "Code"  column  which is a factor. Overall it will
> give me 4 rows, with the value of "Q". Below is a code that I used but it
> did not give me what I wanted.
> 
>> x[which(x$Q == min(x$Q)),]
> 
> Sincerely
> 
> 
>



More information about the R-help mailing list