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