Compte tenu des données ci-dessous,
+-----------------------------+--------+--------+--------+--------+--------+ | | param1 | param2 | param3 | param4 | param5 | +-----------------------------+--------+--------+--------+--------+--------+ | most_common_value | 1 | a | false | NA | 32ms | | ratio_of_most_common_value | 1 | 0.6 | 0.8 | 1.0 | 0.4 | | least_common_value | 1 | b | true | NA | 64ms | | ratio_of_least_common_value | 1 | 0.4 | 0.2 | 1.0 | 0.2 | | unique_values | 1 | 2 | 2 | 1 | 3 | +-----------------------------+--------+--------+--------+--------+--------+
3 Réponses :
Vous pouvez utiliser la fonction La sortie n'est pas votre attente, mais elle peut déduire. < / p> p> frq code> du package SJMISC code>.
Voici quelque chose:
n <- nrow(df)
sapply(
df[grep("param", names(df))],
function(x) {
ourt <- sort(table(x, useNA = "ifany"), decreasing = TRUE)
nt <- length(ourt)
c(
most_common_value = names(ourt)[1],
ratio_of_most_common_value = ourt[1] / n,
least_common_value = names(ourt)[nt],
ratio_of_least_common_value = ourt[nt] / n,
unique_values = nt
)
}
)
param1 param2 param3 param4 param5
most_common_value "1" "a" "false" NA "128ms"
ratio_of_most_common_value.1 "1" "0.6" "0.8" "1" "0.4"
least_common_value "1" "b" "true" NA "64ms"
ratio_of_least_common_value.1 "1" "0.4" "0.2" "1" "0.2"
unique_values "1" "2" "2" "1" "3"
Si vous utilisez tel que P> base r code>, le code suivant peut aider. > res
param1 param2 param3 param4 param5
most_common_value 1 a false <NA> 128ms
ratio_of_most_common_value 1.0 0.6 0.8 1.0 0.4
least_common_value 1 b true <NA> 64ms
ratio_of_least_common_value 1.0 0.4 0.2 1.0 0.2
unique_values 1 2 2 1 2
Comment gérez-vous des "tirages"? C'est-à-dire pourquoi 32ms sont-ils plus communs que 128ms dans la dernière colonne?
@sindri_baldur - qui peut être lancé d'une pièce de monnaie - ce qui signifie soit d'entre eux.