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

时间:2017-02-14 15:07:44

标签: r dataframe data-conversion

我有一个三维excel表,我想将其转换为我可以在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])

1 个答案:

答案 0 :(得分:2)

您可以使用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]

删除第一列
相关问题