R - 熔化两个地址列并铸造为新列

R - Melting two Address columns and casting as new column

我在数据框中有两列代表地址。我需要将两者融为一体并重铸为一个柱子,并且无法将我的头缠绕在 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

编辑:让我更具体一点:顺序无关紧要,我正在使用的数据框中有很多列,而不仅仅是需要合并的两列。如果可以创建一个新的、单独的数据框,它是一个包含来自地址列 1 (A) 和地址列 2 (B) 的所有数据的单列,那就太好了。地址(显然)需要以当前形式保存。给出的一些答案以确实解决此问题的方式将数据混合在一起。

你可以试试

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

这可能比您想象的要容易。您需要堆叠列吗?

df2 = data.frame(C=rbind(df$A, df$B))

熔化重铸也会保留原始数据来自哪一列。如果您仍然需要该信息,但不是作为单独的列,这将很有用。例如:

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'))

会return

> 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)

Returns:

  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