2016-03-31 4 views
1

をdplyrする機能を入力:巡回置換またはnumpy.roll()Iのようなデータがある場合群

:Gは、Iのような値を有する第2の列を作成するdplyr使用するにはどうすればよい基であると

g in 
1 a 
1 b 
1 c 
1 d 
2 e 
2 f 
2 g 
2 h 

g in out 
1 a b 
1 b c 
1 c d 
1 d a 
2 e f 
2 f g 
2 g h 
2 h e 

これは、最初の行を最後に置くroll()または並べ替えです。私は、標準的な評価関数を使用して、リード/ラグ、c()、tail/head内のベクトルスライスの組み合わせを試しました。私はそのような望ましい順列、NAs(私が欲しくない)、または因子からintへの型変換を得ない。

答えて

3

我々は

library(dplyr) 
df1 %>% 
    group_by(g) %>% 
    mutate(Out=dplyr::lead(In, default=first(In))) 
#  g In Out 
# (int) (chr) (chr) 
#1  1  a  b 
#2  1  b  c 
#3  1  c  d 
#4  1  d  a 
#5  2  e  f 
#6  2  f  g 
#7  2  g  h 
#8  2  h  e 

「では、」NOTEのfirst値としてdefaultleadを使用することができます。mutate内の呼び出し中に、それはいくつかの問題を作成することができますように私は、「中」、「中」から列名を変更しました。

+2

うわー、ありがとう!私はdplyr :: versionを使用していませんでしたが、デフォルトの引数についてはわかりませんでした。 – Joe

関連する問題