【发布时间】:2019-11-27 14:29:06
【问题描述】:
这是我的查询,因为我还没有找到合适的答案.. 我有一个数据集,它描述了 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)
希望它有意义,并在此先感谢。
【问题讨论】:
-
不用reshape,用dplyr group函数总结一下即可。
-
我无法获取您的
statsDK库,但我认为这应该很容易解决。您可以复制您的数据集并将TO_muni和FROM_muni的名称颠倒过来。然后full_join原件和副本,最后用mutate计算差值。
标签: r dplyr subtraction