列 a、b、および c を持つデータ フレームがあります。b と c の間に新しい列 d を追加したいと思います。
cbindを使用して最後に d を追加できることはわかっていますが、2 つの列の間に挿入するにはどうすればよいですか?
パッケージの関数add_column()
を使用することをお勧めします。tibble
library(tibble)
dataset <- data.frame(a = 1:5, b = 2:6, c=3:7)
add_column(dataset, d = 4:8, .after = 2)
列インデックスの代わりに列名を使用できることに注意してください。
add_column(dataset, d = 4:8, .after = "b")
または、より便利な場合.before
の代わりに引数を使用します。.after
add_column(dataset, d = 4:8, .before = "c")
新しい列に追加します。
df$d <- list/data
その後、それらを並べ替えることができます。
df <- df[, c("a", "b", "d", "c")]
[で列を並べ替えたり、必要な順序で列を表示したりできます。
d <- data.frame(a=1:4, b=5:8, c=9:12)
target <- which(names(d) == 'b')[1]
cbind(d[,1:target,drop=F], data.frame(d=12:15), d[,(target+1):length(d),drop=F])
a b d c
1 1 5 12 9
2 2 6 13 10
3 3 7 14 11
4 4 8 15 12
c
が常にすぐに続くと仮定するとb
、このコードはdata.frameb
のどこにいても後に列を追加b
します。
> test <- data.frame(a=1,b=1,c=1)
> test
a b c
1 1 1 1
> bspot <- which(names(test)=="b")
> data.frame(test[1:bspot],d=2,test[(bspot+1):ncol(test)])
a b d c
1 1 1 2 1
あるいはもっと自然に:
data.frame(append(test, list(d=2), after=match("b", names(test))))
これは、データ フレームの特定の位置に列を挿入する簡単で汚い方法です。私の場合、元のデータ フレームに 5 つの列があり、との間にc1, c2, c3, c4, c5
新しい列を挿入します。c2b
c2
c3
1) まず、テスト データ フレームを作成しましょう。
> dataset <- data.frame(c1 = 1:5, c2 = 2:6, c3=3:7, c4=4:8, c5=5:9)
> dataset
c1 c2 c3 c4 c5
1 1 2 3 4 5
2 2 3 4 5 6
3 3 4 5 6 7
4 4 5 6 7 8
5 5 6 7 8 9
c2b
2)データ フレームの最後に新しい列を追加します。
> dataset$c2b <- 10:14
> dataset
c1 c2 c3 c4 c5 c2b
1 1 2 3 4 5 10
2 2 3 4 5 6 11
3 3 4 5 6 7 12
4 4 5 6 7 8 13
5 5 6 7 8 9 14
3) 列インデックスに基づいてデータ フレームを並べ替えます。私の場合、既存の列 2 と 3 の間に新しい列 (6) を挿入したいと考えていc(1:2, 6, 3:5)
ますc(1, 2, 6, 3, 4, 5)
。
> dataset <- dataset[,c(1:2, 6, 3:5)]
> dataset
c1 c2 c2b c3 c4 c5
1 1 2 10 3 4 5
2 2 3 11 4 5 6
3 3 4 12 5 6 7
4 4 5 13 6 7 8
5 5 6 14 7 8 9
そこには!
あなたは以下のようにすることができます -
df <- data.frame(a=1:4, b=5:8, c=9:12)
df['d'] <- seq(10,13)
df <- df[,c('a','b','d','c')]