我有一个一维数据框作为输入:
A,1,B,2,C,3,D,4
我需要像那样转换为 2D 数据框:
A,1
B,2
C,3
D,4
我该怎么做?我不能使用 matrix(...)
,因为数据框包含非数值。
[编辑] dput
请求的数据:
structure(list(V1 = structure(1L, .Label = "A", class = "factor"),
V2 = 1, V3 = structure(1L, .Label = "B", class = "factor"),
V4 = 2, V5 = structure(1L, .Label = "C", class = "factor"),
V6 = 3, V7 = structure(1L, .Label = "D", class = "factor"),
V8 = 4), .Names = c("V1", "V2", "V3", "V4", "V5", "V6",
"V7", "V8"), class = "data.frame", row.names = c(NA, -1L))
最佳答案
您可以使用沿列循环的逻辑向量从一维数据框中对列进行子集化。
data.frame(x = unlist(d[ , c(TRUE, FALSE)]), y = unlist(d[ , c(FALSE, TRUE)]))
# x y
# V1 A 1
# V3 B 2
# V5 C 3
# V7 D 4
关于R将一维数据框转换为二维数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26790537/