您好我正在尝试使用dplyr创建一个新变量。 我的数据如下所示:
Land happy year
<fctr> <int> <dbl>
1 Country1 09 2002
2 Country1 08 2012
3 Country3 05 2008
...
要创建一个具有每个Land和year的happy的平均值的变量,我使用了以下代码:
New <-df %>%
group_by(Land, year) %>%
mutate(mean.happy = mean(happy, na.rm=T))
现在我想用这个内容制作一个变量: (2012年为快乐的意思) - (每个国家的快乐意味着)。
如何使用这些条件构建新变量?
答案 0 :(得分:2)
这是一个dplyr / tidyr解决方案。
void function(...){...}
答案 1 :(得分:1)
这是一个data.table解决方案。它通常更快
library(data.table)
dt = read.table("clipboard", header = TRUE)
setDT(dt)
dt[ , "mean.happy" := mean(happy), by = .(Land, year)]
dt[ , "diff.happiness" := mean(happy[year == 2012]) - mean(happy[year == 2008])]
> dt
Land happy year mean.happy diff.happiness
1: Country1 9 2002 9 3
2: Country1 8 2012 8 3
3: Country3 5 2008 5 3