我有这样的数据集
x y z
a 5 4
b 1 2
我想要连续的列和行:
ay 5
az 4
by 1
bz 2
由于
答案 0 :(得分:1)
您可以使用melt
和paste
但是您需要将您的rownames变为变量,i..e
df$new <- rownames(df)
m_df <- reshape2::melt(df)
rownames(m_df) <- paste0(m_df$new, m_df$variable)
m_df <- m_df[-c(1:2)]
m_df
# value
#ax 5
#bx 1
#ay 4
#by 2
#az 3
#bz 1
编辑完成后,您无需将rownames转换为变量,只需
m1_df <- reshape2::melt(df)
m1_df$new <- paste0(m1_df$x, m1_df$variable)
m1_df
# x variable value new
#1 a y 5 ay
#2 b y 1 by
#3 a z 4 az
#4 b z 2 bz
然后,您可以将数据框整理为所需的输出
答案 1 :(得分:0)
以下是base R
stack(setNames(as.list(unlist(df1[-1])), outer(df1$x, names(df1)[-1], paste0)))[2:1]