web-dev-qa-db-ja.com

Rの2つの列を特定のシンボルとマージする方法は?

私は次のようにRで読んだテーブルを持っています:

column1 column2
A        B

次のように2つの列を一致させるために使用するコマンドは何ですか?

Column 3
A_B
38
Catherine

「マージ」とはどういう意味かわかりませんが、これはどういう意味ですか?

> DF = data.frame(A = LETTERS[1:10], B = LETTERS[11:20])
> DF$C = paste(DF$A, DF$B, sep="_")
> head(DF)
  A B  C
1 A K A_K
2 B L B_L
3 C M C_M
4 D N D_N

または同等に、@ daroczigが指摘しているように:

 within(DF, C <- paste(A, B, sep='_'))
62
csgillespie

私の個人的なお気に入りは、uniteの-​​ tidyr を使用することです。

set.seed(1)
df <- data.frame(colA = sample(LETTERS, 10),
                 colB = sample(LETTERS, 10))
# packs: pipe + unite
require(magrittr); require(tidyr)


# Unite
df %<>%
  unite(ColAandB, colA, colB, remove = FALSE)

結果

> head(df, 3)
  ColAandB colA colB
1      G_F    G    F
2      J_E    J    E
3      N_Q    N    Q

サイドノート

個人的には、uniteのremove = TRUE / FALSE機能が非常に便利だと思います。さらに、tidyrdplyrワークフローを非常にうまく機能させ、 separate 結合する列について気が変わった場合。同じ行で、NAsがワークフローにna.omitを導入する問題である場合、目的の列を作成する前に望ましくない行を簡単に削除できます。

9
Konrad