在 R 中将 3D 数据帧转换为 2D 数据帧

Convert 3D-dataframe to 2D-dataframe in R

我有一个三维 excel table,我想将其转换成可以在 R 中使用的二维数据框。我认为最好的方法是在 R 中读取它,然后然后直接在 R 中转换它,但我没有找到如何。这是一个例子。我有一个类似 df1 的数据框,我想将其转换为 df2:

a1 <- paste("a","b","c",sep = ";")
a2 <- paste("e","f","g",sep = ";")

df1 <- data.frame(v1=a1, v2=a2, row.names = "w1")
df2 <- data.frame(w1=c(rep("v1",3),rep("v2",3)), "value"=letters[1:6])

您可以使用 reshape2 实现此目的

sub_df1 <- apply(df1,2,FUN= strsplit,split = ";")
# $v1
# $v1$w1
# [1] "a" "b" "c"
# $v2 
# $v2$w1
# [1] "e" "f" "g
sub_df2 <- sapply(apply(df1,2,FUN= strsplit,split = ";"), FUN = unlist,use.names = TRUE, recursive = FALSE)
#     v1  v2 
# w11 "a" "e"
# w12 "b" "f"
# w13 "c" "g"
melt(sub_df2)[-1]
#    Var2 value
# 1   v1     a
# 2   v1     b
# 3   v1     c
# 4   v2     e
# 5   v2     f
# 6   v2     g

然后您可以通过添加 [-1]

来删除第一列