はs2
への最初の観測なしs1
とregions
に最後の観察せずにregions
を割り当てることです。必ずしも余分なパッケージは必要ありません。
1)あなたは、最後の観察(head(column, -1)
)または最初の観測(tail(column, -1)
)なしなしベクトルを取得することができますhead
とtail
機能これらにより
を使用する:いくつかのアプローチがあります。使用
:
new.df <- data.frame(s1 = head(df$regions,-1), s2 = tail(df$regions,-1))
は、このようにあなたを取得します:
> new.df
s1 s2
1 VE PU
2 PU PR
3 PR DE
4 DE NU
5 NU AD
6 AD DE
7 DE NO
8 NO AD
あなたは3つの列をしたい場合は、あなたができる:
になり
new.df <- data.frame(s1 = head(df$regions,-2),
s2 = head(tail(df$regions,-1),-1),
s3 = tail(df$regions,-2))
:
> new.df
s1 s2 s3
1 VE PU PR
2 PU PR DE
3 PR DE NU
4 DE NU AD
5 NU AD DE
6 AD DE NO
7 DE NO AD
2)基本的なサブセット
head
とtail
機能に代わるものとして、あなたはまた、基本的なサブセットを使用することができます。
new.df <- data.frame(s1 = df$regions[-nrow(df)],
s2 = df$regions[-1])
3)を使用して、 embed
-機能
n <- 3
new.df <- data.frame(embed(df$regions, n)[,n:1])
names(new.df) <- paste0('s',1:n)
与える:
> new.df
s1 s2 s3
1 VE PU PR
2 PU PR DE
3 PR DE NU
4 DE NU AD
5 NU AD DE
6 AD DE NO
7 DE NO AD
4)もあるかもしれないdata.table
パッケージからdata.table
-package
からshift
機能をshift
-functionを使用してオプション:
library(data.table)
dt <- as.data.table(df)
new.dt <- na.omit(dt[, .(s1 = regions,
s2 = shift(regions, 1, NA, 'lead'),
s3 = shift(regions, 2, NA, 'lead'))])
、代わりのna.omit
、あなたもis.na
にrowSums
を使用することもできます。
new.dt <- dt[, .(s1 = regions,
s2 = shift(regions, 1, NA, 'lead'),
s3 = shift(regions, 2, NA, 'lead'))]
new.dt[rowSums(is.na(new.dt))==0]
これは機能しました。自分のデータをセットとしてもっと考えさせました。私はあなたの援助に非常に感謝します。二値化も完了しました。 – user7845625