2017-06-01 11 views
2

こんにちは私はdplyrで新しい変数を作成しようとしています。今R:dplyrを使用して条件付きで新しい変数を作成

New <-df %>% 
     group_by(Land, year) %>% 
     mutate(mean.happy = mean(happy, na.rm=T)) 

私は、変数を作成したいと思います:

   Land  happy  year 
       <fctr> <int>  <dbl> 
      1 Country1 09  2002 
      2 Country1 08  2012 
      3 Country3 05  2008 
      ... 

は土地と年間幸せの平均で変数を作成するには、私はこのコードを使用: 私のデータは以下のようになります。このコンテンツ: (2012年の幸せの平均) - 各国の(2008年の幸せの平均)。

これらの条件で新しい変数を作成するにはどうすればよいですか?

答えて

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 
2

ここでは、dplyr/tidyrソリューションがあります。

library(dplyr) 
library(tidyr) 

df <- df %>% 
     group_by(Land, year) %>% 
     mutate(mean.happy = mean(happy, na.rm=T)) %>% 
     spread(year, mean.happy) 
関連する問題