假设我有以下每个抽屉增加袜子的数据
>socks
year drawer_nbr sock_total
1990 1 2
1991 1 2
1990 2 3
1991 2 4
1990 3 2
1991 3 1
我想要一个二进制变量来识别袜子是否在每个抽屉中增加了。 1如果增加则为0,否则为0。结果将是
>socks
drawer_nbr growth
<dbl> <factor>
1 0
2 1
3 0
我很难比较一年的sock_total
与另一年的sock_total
。我知道我需要使用dplyr::summaries()
,但我对该功能内部的内容有困难。
答案 0 :(得分:4)
如果您将1991年与1990年进行比较,您可以这样做:
socks %>%
group_by(drawer_nbr) %>%
summarise(growth = +(sock_total[year == 1991] - sock_total[year == 1990] > 0))
# A tibble: 3 x 2
# drawer_nbr growth
# <int> <int>
#1 1 0
#2 2 1
#3 3 0
答案 1 :(得分:1)
您可以混合使用dplyr
和tidyr
:
library(tidyr)
library(dplyr)
socks %>%
group_by(drawer_nbr) %>%
spread(year, sock_total) %>%
mutate(growth = `1991` - `1990`)
或者,如果您只希望增长为二元:
socks %>%
group_by(drawer_nbr) %>%
spread(year, sock_total) %>%
mutate(growth = ifelse((`1991` - `1990`) > 0,
1, 0))