2017-10-20 4 views
3

上の行:結果で私は、既存の列に基づいて新しい列を作成したいのですが、</p> <p>上記の行で始まる既存の列に新しい列ベースを作成しますが、

df <- data.frame(a=c(1:10), b=c("red", "yellow", "blue", "green", "yellow", "purple", "blue", "green", "yellow", "purple")) 

以下のように見える:

df <- data.frame(a=c(1:10), b=c("red", "yellow", "blue", "green", "yellow", "purple", "blue", "green", "yellow", "purple"), c=c("na", "red", "yellow", "blue", "green", "yellow", "purple", "blue", "green", "yellow")) 

あなたはと

答えて

1

一つの方法を提供することが可能である任意の助けてくれてありがとうパッケージdata.tableから:

library(data.table) 
df$c <- shift(df$b, 1) 

df 
# a  b  c 
#1 1 red <NA> 
#2 2 yellow red 
#3 3 blue yellow 
#4 4 green blue 
#5 5 yellow green 
#6 6 purple yellow 
#7 7 blue purple 
#8 8 green blue 
#9 9 yellow green 
#10 10 purple yellow 
1

dplyrこれを使用するには、mutatelag機能を行うことができます。

library(dplyr) 
mutate(df, c = lag(b)) 

#>  a  b  c 
#> 1 1 red <NA> 
#> 2 2 yellow red 
#> 3 3 blue yellow 
#> 4 4 green blue 
#> 5 5 yellow green 
#> 6 6 purple yellow 
#> 7 7 blue purple 
#> 8 8 green blue 
#> 9 9 yellow green 
#> 10 10 purple yellow 
関連する問題