2

アドレスを表すデータ フレームに 2 つの列があります。2 つを溶かして 1 つの列として再キャストする必要があり、reshape2 に頭を悩ませています。例:

          A                     B
    123 address st        122 address st
    125 address st        124 address st 
    127 address st        126 address st

出力としてこれが必要です

          C
    122 address st
    123 address st 
    125 address st
    124 address st
    127 address st
    126 address st

編集:もう少し具体的にしましょう:順序は問題ではなく、マージする必要がある2つだけでなく、作業中のデータフレームに多数の列があります. アドレス列 1 (A) とアドレス列 2 (B) からのすべてのデータを含む単一の列である、新しい別のデータ フレームを作成できれば素晴らしいことです。アドレスは (明らかに) 現在の形式で保存する必要があります。与えられたいくつかの回答は、この問題を解決する方法でデータをマッシュアップしています。

4

3 に答える 3

2

あなたが試すことができます

data.frame(C=c(t(df)), stringsAsFactors=FALSE)
 #             C
 #1 123 address st
 #2 122 address st
 #3 125 address st
 #4 124 address st
 #5 127 address st
 #6 126 address st
于 2015-01-12T19:41:59.873 に答える
1

融解と再キャストは、元のデータがどの列から来たのかを保持します。これは、別の列としてではなく、その情報がまだ必要な場合に役立ちます。例えば:

library(reshape2)
A <- c('123 address st', '125 address st', '127 address st')
B <- c('122 address st', '124 address st', '126 address st')
DF <- data.frame(A, B, stringsAsFactors = FALSE)
DF2 <- melt(data = DF, value.name = 'C', measure.vars = c('A', 'B'))

戻ります

> DF
               A              B
1 123 address st 122 address st
2 125 address st 124 address st
3 127 address st 126 address st

> DF2
  variable              C
1        A 123 address st
2        A 125 address st
3        A 127 address st
4        B 122 address st
5        B 124 address st
6        B 126 address st

並べ替える必要がある場合は、dplyr パッケージを使用すると簡単にできます。

library(dplyr)
arrange(DF2, C)

戻り値:

  variable              C
1        B 122 address st
2        A 123 address st
3        B 124 address st
4        A 125 address st
5        B 126 address st
6        A 127 address st

そして、その厄介な列を削除したい場合はvariable、dplyer を使用することもできます。magrittrベースのパイピング機能を使用する:

> DF3 <- select(DF2, C) %>% arrange(C)
> DF3
               C
1 122 address st
2 123 address st
3 124 address st
4 125 address st
5 126 address st
6 127 address st
于 2015-01-12T19:57:00.500 に答える
0

思ったより簡単かもしれません。列を積み重ねる必要がありますか?

df2 = data.frame(C=rbind(df$A, df$B))
于 2015-01-12T19:42:41.900 に答える