我想知道是否有人可以帮我取下以以下方式设置的桌子:
Date x y z
5-3 12 43 23
5-1 41 75 32
9-5 21 43 60
并使用以下格式创建新表:
Number Letter
12 x
43 y
23 z
41 x
75 y
... ...
行不必以任何特定的方式排序,我只需要一列中的所有数字值,以及第二列中与它们相关联的列字母(在原始表中)。谢谢!
答案 0 :(得分:1)
由于我无法在@Frank的答案中添加评论,因此我将发布自己的评论。这在R底下有效。
这与取消枢纽-插入表格基本相同。
使用@Frank的数据帧DF
:
DF_new=stack(subset(DF, select = -Date))
names(DF_new) <- c("Number", "Letter")
或单线:
DF_new=setNames(stack(subset(DF, select = -Date)), c("Number", "Letter"))
两者均给出结果:
Number Letter
1 12 x
2 41 x
3 21 x
4 43 y
5 75 y
6 43 y
7 23 z
8 32 z
9 60 z
答案 1 :(得分:0)
您可以使用reshape2软件包:
> reshape2::melt(t(DF[, -1]),
varnames=c("Letter", "row"),
value.name = "Number")
Letter row Number
1 x 1 12
2 y 1 43
3 z 1 23
4 x 2 41
5 y 2 75
6 z 2 32
7 x 3 21
8 y 3 43
9 z 3 60
数据:
DF = structure(list(Date = c("5-3", "5-1", "9-5"), x = c(12L, 41L,
21L), y = c(43L, 75L, 43L), z = c(23L, 32L, 60L)), .Names = c("Date",
"x", "y", "z"), row.names = c(NA, -3L), class = "data.frame")