0
votes

Somme par groupe spécifique et renommer

J'ai une trame de données (j'ai pris un exemple de Antoher Post mais cela fonctionne pour la question)

data2 <- data.table(category = c("First","First","Others" "Others"), Frequency = c(15,15,19,20), Bloc = c(B1,B2,B1,B2)


2 commentaires

Voir ce message pour les différentes options de Recovering: Stackoverflow .Com / Questions / 44590935 / ...


Je l'ai corrigé merci


3 Réponses :


1
votes

Vous pouvez remplacer code> toutes les catégories qui ne sont pas 'd'abord' code> sur ' et la somme (code> par groupe.

library(data.table)
data[, Category := replace(Category, Category != 'First', 'Other')]
data[, .(Frequency = sum(Frequency)), .(Category, Bloc)]

#   Category Bloc Frequency
#1:    First   B1        15
#2:    First   B2        15
#3:    Other   B1        19
#4:    Other   B2        20


2 commentaires

Quand j'essaie, je reçois ce message d'erreur; "Vérifiez que c'est.data.table (dt) == true. Sinon,: = et : = (...) est défini pour une utilisation dans J, une fois seulement et de manière particulière. Voir l'aide. Voir l'aide (": ="). "


Utilisez-vous sur les données que vous avez partagées? Vos données doivent être data.table . Selon le message d'erreur, il ne semble pas que c'est un data.table .



0
votes

Une autre option sans changer le jeu de données d'origine

 library(data.table)
 group <- "First"


 ingroup <- sum(data$Frequency[data$Category == group])
 not_ingroup <- sum(data$Frequency[! data$Category == group])

 data.table(Category = c(group, "Others"), Frequency=c(ingroup, not_ingroup) )


0 commentaires

1
votes
library(data.table)
data = data.table(Category=c("First","First","First","Second","Third", "Third", "Second"), 
                  Frequency=c(10,15,5,2,14,20,3))


data <- data %>% 
  mutate(Category = case_when(
    Category == 'First' ~ "First", 
    TRUE ~ 'Other'
  )) %>% 
  group_by(Category) %>% 
  mutate(Frequency = sum(Frequency)) %>% 
  group_by(Category, Frequency) %>% 
  summarise(Category = first(Category))

0 commentaires