Ценю любую помощь в этом, я пытаюсь переучить некоторые основы.
Вот пример кода для работы с моей проблемой, он взят из базы данных пострадавших работников.
Area <- c("Connecticut", "Maine", "Massachusetts", "New Hampshire", "Texas", "Arizona", "California", "Washington")
Region <- c("Northeast", "Northeast", "Northeast", "Northeast", "South", "South", "West", "West")
X2004 <- c(0,1,4,1,3,4,2,2)
X2005 <- c(1,0,6,2,0,1,0,2)
X2006 <- c(0,0,1,1,2,1,0,0)
df1 <- data.frame(Area, Region, X2004, X2005, X2006)
Я хотел бы показать процентное изменение от двухлетнего среднего за 2004-2005 гг. До единственного 2006 г. на базе R. Я смог решить эту проблему с помощью пакета Tidyverse, но похоже на использование костыля. Вот что у меня есть:
df2 <- reshape(df1,
idvar=c("Area"),
v.names="count",
varying=c("X2004","X2005","X2006"),
direction="long",
times=2004:2006,
timevar="year")
df3 <- df2 %>% group_by(Region, year) %>%
summarise(total_count = sum(count))
df3$pre <- ifelse(df3$year<=2005, 1, 0)
df3 %>%
group_by(Region) %>%
summarise(mean_count_pre = mean(total_count[pre==1]),
mean_count_post = mean(total_count[pre==0]),
pct_change = 100*(mean_count_post - mean_count_pre) / mean_count_pre)
Любые идеи о том, как справиться с этим, не полагаясь на Tidyverse или Dplyr? По-настоящему ценю помощь в этом, я изучил R в Tidyverse, и я пытаюсь лучше понять основы.