data.table年代melt
関数は、パラレル列にグループ化するためのパラメータを取ることができる点で特に優れています。 variable
識別子列が挿入されますが、サブセット化することができます。基地Rで
library(data.table)
melt(setDT(df), # set df to a data.table
measure.vars = list(c(1,3), c(2,4)), # set column groupings
value.name = 'V')[ # set output name scheme
, -1, with = F] # subset out variable column
## V1 V2
## 1: -75.6364 -33.3363
## 2: -62.4546 -42.6754
## 3: -53.1363 -48.3385
## 4: -51.9633 -37.6143
## 5: -68.6320 -35.7657
## 6: -60.0532 -41.7773
## 7: -56.0956 -47.4524
## 8: -60.3062 -54.7817
、stack
関数は、並列カラムの長いが、ないように溶融します。しかし、列名を添え字に変えてunstack
にするか、rep(rep(1:2, each = 4), 2)
のような手で適切なベクトルを作ることができます。
df2 <- stack(df)
# change ind (variable/key/index) column to number, take modulo 2 to separate even/odd,
# and invert 0/1 add 1 to make better column names
df2$ind <- 1 + !as.numeric(df2$ind) %% 2
unstack(df2)
## X1 X2
## 1 -75.6364 -33.3363
## 2 -62.4546 -42.6754
## 3 -53.1363 -48.3385
## 4 -51.9633 -37.6143
## 5 -68.6320 -35.7657
## 6 -60.0532 -41.7773
## 7 -56.0956 -47.4524
## 8 -60.3062 -54.7817
見てみましょう'dplyr'パッケージの' join'や基底Rからの 'merge'のようになります。 – shayaa
V3とV4の列の上に列V1とV2を積み重ねているようです。そうですか? – eipi10
希望の出力に8行目がないと思います。 – alistaire