我想知道是否有人可以帮我安排一张桌子,桌子的摆放方式如下:
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
... ...
行不必以任何特定的方式排序,我只需要一列中的所有数字值,以及第二列中与它们相关的列字母(在原始表中)。谢谢!
发布于 2018-10-13 01:43:54
因为我不能对@Frank的回答添加评论,所以我发布了我自己的评论。这在base 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
发布于 2018-10-13 01:35:47
您可以使用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")
https://stackoverflow.com/questions/52784320
复制相似问题