Je suis assez nouveau dans R et je suis confronté à un problème qui, je suppose, est assez facile à résoudre, mais je n'ai pas trouvé de réponse.
J'ai un dataframe appelé clg où fondamentalement j'ai 3 colonnes date, X1, X2 .
X1 et X2 sont le nom des équipes de pays. X1 et X2 ont la même liste de pays.
J'essaie simplement de compter la fréquence de chaque pays dans les deux colonnes comme un total .
Jusqu'à présent, je n'ai pu compter que la fréquence de la colonne X1 mais je n'ai pas trouvé de moyen de additionner les deux colonnes.
clt <- as_tibble(na.omit(count(clg, clg$X1)))
Je voudrais obtenir un bloc de données où dans les premières colonnes j'ai des pays uniques, et dans la deuxième colonne la somme des occurrences dans X1 + X2 . p>
3 Réponses :
Vous pouvez atteindre votre objectif en deux étapes. Dans la première étape, vous calculez la somme des occurrences pour chaque pays. Dans l'étape suivante, vous joignez les deux df ensemble et calculez la somme totale.
X1_sum <- df %>%
dplyr::group_by(X1) %>%
dplyr::summarize(n_x1 = n())
X2_sum <- df %>%
dplyr::group_by(X2) %>%
dplyr::summarize(n_x2 = n()
final_summary <- X1_sum %>%
# merging data with by country names
dplyr::left_join(., X2_sum, by = c("X1", "X2")) %>%
dplyr::mutate(n_sum = n_x1 + n_x2)
Vous pouvez utiliser unlist () et table () pour obtenir les décomptes globaux. En l'enveloppant dans data.frame () , vous obtiendrez la sortie à deux colonnes souhaitée.
clg <- data.frame(date=1:3,
X1=c("nor", "swe", "alg"),
X2=c("swe", "alg", "jpn"))
data.frame(table(unlist(clg[c("X1", "X2")])))
# Var1 Freq
# 1 alg 2
# 2 nor 1
# 3 swe 2
# 4 jpn 1
Avec tidyverse , nous pouvons rassembler au format 'long' puis effectuer le count
clg <- structure(list(date = 1:3, X1 = structure(c(2L, 3L, 1L), .Label = c("alg",
"nor", "swe"), class = "factor"), X2 = structure(c(3L, 1L, 2L
), .Label = c("alg", "jpn", "swe"), class = "factor")),
class = "data.frame", row.names = c(NA,
-3L))
library(tidyverse)
gather(clg, key, Var1, -date) %>%
count(Var1)
# A tibble: 4 x 2
# Var1 n
# <chr> <int>
#1 alg 2
#2 jpn 1
#3 nor 1
#4 swe 2