Ich bin auf der Suche nach einer schnelleren Möglichkeit, nach Gruppentyp, für viele verschiedene Gruppen in einem df ohne Teilmenge zusammenzufassen. Unten ist ein Beispieldatenrahmen und der aktuelle Code, den ich verwende, um es zu erreichen. Es scheint mir sehr ausführlich zu sein, und ich vermute, dass es einen schnelleren Weg gibt, dies zu lösen. In diesem Beispiel fasst mein Code den Gesundheitsumsatz nach Name gruppiert zusammen und führt ihn dann wieder in den Master zusammen. Ich möchte sowohl Gesundheits- als auch Vision-Variablen zusammenfassen, gruppiert nach Namen. Der Schlüssel ist, dass ich nur Einkommen für Gesundheit und Vision will, wenn es eine 1 in der Variable gibt. Danke für Ihre Hilfe.Summe mehrerer Variablen nach Gruppentyp in einem df ohne Unterteilung
#df
name = c("jerry","jerry","jerry","dave","dave","dave","mary","mary","mary")
health = c(1,0,1,1,0,1,0,1,1)
vision = c(0,1,0,0,1,0,1,0,0)
rev =c(100,200,500,1000,800,300,400,600,300)
df = data.frame(name,health,vision,rev)
#Subset health
health = subset(df, health == 1)
#Sum by group type
library(dplyr)
health <- health %>% group_by(name) %>%
mutate(
health_rev=sum(rev, na.rm = TRUE))
#Select variables
health <- health[c("name","health_rev")]
#Remove duplicates
health <- health[!duplicated(health$name), ]
#Merge back to master
master <- merge(x = df, y = health, by = "name", all.x = TRUE)
Manchmal zu lange Umformung macht Ihre Daten einfacher zu handhaben: 'Bibliothek (tidyverse); df%>% sammeln (var, val, health, vision)%>% filtern (as.logical (val))%>% group_by (name, var)%>% zusammenfassen (rev = sum (rev))%>% spread (var, rev) ' – alistaire