我在数据框中有两列代表地址。我需要融化这两个并重新组成一个列,并且我很难将头部缠绕在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)的所有数据的单列,那将是很好的。地址(显然)需要以当前形式保存。给出的一些答案是将数据混合在一起,以解决此问题的方式。
答案 0 :(得分: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
答案 1 :(得分: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 pacakge:
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
的管道功能:</ p>
> 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
答案 2 :(得分:0)
它可能比你想象的容易。你需要堆叠列吗?
df2 = data.frame(C=rbind(df$A, df$B))