I've the following data frame:
and I need to evaluate the probability that a student is a "M", i. e. P("M") equal to the ratio between the number of the "M" and the number of studenti. I did it in this way:
nStudenti <- length(studenti$sesso)
tabellaSesso <- table(studenti$sesso)
nMaschi <- tabellaSesso[names(tabellaSesso) == "M"]
P = nMaschi / nStudenti
Is this the shortest way or there are commands which simply the things?
CodePudding user response:
You could create a function
#Function
propCond=function(VAR,MODALITY){
PROP=sum(VAR==MODALITY,na.rm=TRUE)/sum(!is.na(VAR),na.rm=TRUE)
return(PROP)
}
#Result
propCond(c("a","a","b"),"a")
CodePudding user response:
You can use table()
to get the absolute frequencies and then use prop.table()
to get the probabilities. If you are only interested in a specific value like "M"
, you can just index that value.
# sample data
studenti <- data.frame(sesso = sample(c("M", "F", NA), 100, replace = TRUE))
# all probabilties
prop.table(table(studenti$sesso))
#>
#> F M
#> 0.530303 0.469697
# specfic probability
prop.table(table(studenti$sesso))["M"]
#> M
#> 0.469697
Created on 2021-10-06 by the reprex package (v2.0.1)