首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在R中重新排列表格

在R中重新排列表格
EN

Stack Overflow用户
提问于 2018-10-13 01:22:20
回答 2查看 45关注 0票数 0

我想知道是否有人可以帮我安排一张桌子,桌子的摆放方式如下:

代码语言:javascript
运行
复制
Date   x    y    z  
5-3    12   43  23  
5-1    41   75  32  
9-5    21   43  60  

并制作一个新的表格,格式如下:

代码语言:javascript
运行
复制
Number  Letter  
  12       x  
  43       y  
  23       z  
  41       x  
  75       y  
 ...      ...  

行不必以任何特定的方式排序,我只需要一列中的所有数字值,以及第二列中与它们相关的列字母(在原始表中)。谢谢!

EN

回答 2

Stack Overflow用户

发布于 2018-10-13 01:43:54

因为我不能对@Frank的回答添加评论,所以我发布了我自己的评论。这在base R中有效。

这在本质上与取消透视表是相同的。

使用@Frank的数据帧DF

代码语言:javascript
运行
复制
DF_new=stack(subset(DF, select = -Date))
names(DF_new) <- c("Number", "Letter")

或者一行代码:

代码语言:javascript
运行
复制
DF_new=setNames(stack(subset(DF, select = -Date)),  c("Number", "Letter"))

这两种方法都给出了结果:

代码语言:javascript
运行
复制
  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
EN

Stack Overflow用户

发布于 2018-10-13 01:35:47

您可以使用reshape2包:

代码语言:javascript
运行
复制
> 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

数据:

代码语言:javascript
运行
复制
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")
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52784320

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档