R:使用dplyr创建条件创建新变量

时间:2017-06-01 20:07:06

标签: r dplyr

您好我正在尝试使用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年为快乐的意思) - (每个国家的快乐意味着)。

如何使用这些条件构建新变量?

2 个答案:

答案 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