dplyrを使用しているときに変数名を動的に作成したいと思います。しかし、私は非dplyrソリューションでもうまくいくでしょう。dplyr mutateを使用して新しい変数名を自動的に生成
例の場合:lag_original変数名:
data(iris)
library(dplyr)
iris <- iris %>%
group_by(Species) %>%
mutate(
lag_Sepal.Length = lag(Sepal.Length),
lag_Sepal.Width = lag(Sepal.Width),
lag_Petal.Length = lag(Petal.Length)
) %>%
ungroup
head(iris)
Sepal.Length Sepal.Width Petal.Length Petal.Width Species lag_Sepal.Length lag_Sepal.Width
(dbl) (dbl) (dbl) (dbl) (fctr) (dbl) (dbl)
1 5.1 3.5 1.4 0.2 setosa NA NA
2 4.9 3.0 1.4 0.2 setosa 5.1 3.5
3 4.7 3.2 1.3 0.2 setosa 4.9 3.0
4 4.6 3.1 1.5 0.2 setosa 4.7 3.2
5 5.0 3.6 1.4 0.2 setosa 4.6 3.1
6 5.4 3.9 1.7 0.4 setosa 5.0 3.6
Variables not shown: lag_Petal.Length (dbl)
しかし、代わりにこの三回やって、私は名前に取るこれらの「遅れ」変数の100を作成します。私は新しい変数名を100回タイプすることなくこれを行う方法を理解しようとしていますが、私は近づいています。
例では、thisの例とthisの例を調べました。それらは似ていますが、私が必要とする特定の解決策をまとめてまとめることはできません。どんな助けもありがとう!
インスピレーションのために@BenFasoliに感謝します。私は彼の答えを取って、私が必要とする解決策を得るためにちょっと微調整しました。 This RStudio BlogとThis SO postも使用しました。変数名の「遅れ」は先行するのではなく後続していますが、私はそれで生きることができます。
私の最終的なコードは、それが他の誰にも役に立ちます場合にはここに掲載されて:あなたは、列名にlag_
を付加(特定の列またはmutate_at
)mutate_all
を使用することができます
lagged <- iris %>%
group_by(Species) %>%
mutate_at(
vars(Sepal.Length:Petal.Length),
funs("lag" = lag)) %>%
ungroup
# A tibble: 6 x 8
Sepal.Length Sepal.Width Petal.Length Petal.Width Species Sepal.Length_lag Sepal.Width_lag
<dbl> <dbl> <dbl> <dbl> <fctr> <dbl> <dbl>
1 5.1 3.5 1.4 0.2 setosa NA NA
2 4.9 3.0 1.4 0.2 setosa 5.1 3.5
3 4.7 3.2 1.3 0.2 setosa 4.9 3.0
4 4.6 3.1 1.5 0.2 setosa 4.7 3.2
5 5.0 3.6 1.4 0.2 setosa 4.6 3.1
6 5.4 3.9 1.7 0.4 setosa 5.0 3.6
# ... with 1 more variables: Petal.Length_lag <dbl>
感謝を。私はあなたの答えをとり、私が必要とする解決策を得るためにちょっと微調整しました。私も[This RStudio Blog](https://blog.rstudio.org/2016/06/27/dplyr-0-5-0/)と[This SO post](http://stackoverflow.com/questions)を使いました。/27027347/mutate-each-summarize-each-in-dplyr-how-do-i-select-certain-columns-and-give)である。 私の最終的なコードは、それが他の誰にも役に立ちます場合にはここに掲載されています '遅れ<- iris %>% GROUP_BY(種)%>% mutate_at( VARS(Sepal.Length:Petal.Length)、 低速運行(「遅れ"=遅れ))%>% ungroup' もう一度ありがとう! –