减去单位之间随时间的运动

这是我的查询,因为我还没有找到合适的答案。 我有一个数据集,描述了13年跨丹麦城市之间流动人口总数的所有组合。

我想要的是一年中所有市政组合之间的移动总和。

请参见下面的代码:

library("tidyverse")
library("statsDK")


# GETTING DATA FROM DANISH ARCHIVES
fly66_0 <- retrieve_data("FLY66",ALDER = "0")
fly66_1 <- retrieve_data("FLY66",ALDER = "1")
fly66_2 <- retrieve_data("FLY66",ALDER = "2")
fly66_3 <- retrieve_data("FLY66",ALDER = "3")
fly66_4 <- retrieve_data("FLY66",ALDER = "4")
fly66_5 <- retrieve_data("FLY66",ALDER = "5")

fly_66 <- rbind(fly66_0,fly66_1,fly66_2,fly66_3,fly66_4,fly66_5)

fly_66 <- fly_66 %>%
  group_by(TO_muni,FROM_muni,YEAR) %>%
  summarise(Number = sum(Number))

这将产生下表(我将列名更改为英语):

# A tibble: 6 x 4
# Groups:   TILKOMMUNE,FRAKOMMUNE [3]
  TO_muni    FROM_muni    YEAR    Number
  <chr>       <chr>      <dbl>   <dbl>
1 101         202       2006       1
2 101         202       2007       3
3 202         101       2006       2
4 202         101       2007       3
5 101         303       2006       2
6 303         101       2007       1

但是我想要的是:

# A tibble: 6 x 4
# Groups:   TILKOMMUNE,FRAKOMMUNE [3]
  TO_muni    FROM_muni    YEAR    Number
  <chr>       <chr>      <dbl>   <dbl>
1 101         202       2006      -1
2 101         202       2007       0
3 202         101       2006       1
4 202         101       2007       0
5 101         303       2006       2
6 303         101       2006      -2
5 101         303       2007      -1
6 303         101       2007       1

我已经尝试了以下方法,但是我对它的理解不多:

library("reshape2")
fly_66 <- fly_66 %>% 
  dcast(TO_muni + YEAR ~ FROM_muni,value.var = "YEAR",fill = 0)

希望这是有道理的,并预先感谢。

luvlu 回答:减去单位之间随时间的运动

不太简单,但是您可以分3个步骤完成

开始于: fly_66 <- rbind(fly66_0,fly66_1,fly66_2,fly66_3,fly66_4,fly66_5)

您首先获得实际输出:

fly_66a <- fly_66 %>%
  group_by(TO_muni,FROM_muni,YEAR) %>%
  summarise(Number = sum(Number))

然后您将其“取反”以实现相反的流程:

fly_66b <- fly_66 %>%
  group_by(TO_muni,YEAR) %>%
  summarise(Number = -sum(Number)) %>% #negative sum here
  rename(FROM_muni = TO_muni,TO_muni = FROM_muni) #you invert the column names to simulate the opposite flow

您现在可以绑定它,并使用“完成”功能生成缺少的组合,您只需将其填充为0s

fly_66_final <- fly_66a %>%
  bind_rows(fly_66b) %>%
  complete(TO_muni,YEAR,fill = list(Number = 0))

然后您可以按照自己的方式安排

本文链接:https://www.f2er.com/3020841.html

大家都在问