首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将四列转换为两列

如何将四列转换为两列
EN

Stack Overflow用户
提问于 2019-06-21 10:16:38
回答 2查看 45关注 0票数 0

我必须做一个费舍尔测试来比较纳斯达克和纽约证券交易所的一些股票之间的方差。我有一个关于纳斯达克股票回报的专栏,另一个关于纽约证交所股票的专栏是这样的:

代码语言:javascript
复制
NasdaqStocks NyseStocks Nasdaq   Nyse
1            5          nasdaq   nyse
2            6          nasdaq   nyse
3            7          nasdaq   nyse
4            8          nasdaq   nyse

我需要这样的东西

代码语言:javascript
复制
Returns Market
1        nasdaq
2        nasdaq
3        nasdaq
4        nasdaq
5        nyse
6        nyse
7        nyse
8        nyse
9        nyse
EN

回答 2

Stack Overflow用户

发布于 2019-06-21 10:48:28

如果只有4列,我们可以对它们执行unlist操作并创建一个新的数据帧

代码语言:javascript
复制
data.frame(Returns = unlist(df[1:2]), Market = unlist(df[3:4]), row.names = NULL)

#  Returns Market
#1       1 nasdaq
#2       2 nasdaq
#3       3 nasdaq
#4       4 nasdaq
#5       5   nyse
#6       6   nyse
#7       7   nyse
#8       8   nyse
票数 1
EN

Stack Overflow用户

发布于 2019-06-21 11:54:22

您可以使用reshape

代码语言:javascript
复制
reshape(d[1:2], varying=names(d)[1:2], v.names="Returns", direction="long", 
        times=tolower(gsub("Stocks", "", names(d)[1:2])), timevar="Market")
#          Market Returns id
# 1.nasdaq nasdaq       1  1
# 2.nasdaq nasdaq       2  2
# 3.nasdaq nasdaq       3  3
# 4.nasdaq nasdaq       4  4
# 1.nyse     nyse       5  1
# 2.nyse     nyse       6  2
# 3.nyse     nyse       7  3
# 4.nyse     nyse       8  4

Data

代码语言:javascript
复制
d <- structure(list(NasdaqStocks = 1:4, NyseStocks = 5:8, Nasdaq = structure(c(1L, 
1L, 1L, 1L), .Label = "nasdaq", class = "factor"), Nyse = structure(c(1L, 
1L, 1L, 1L), .Label = "nyse", class = "factor")), row.names = c(NA, 
-4L), class = "data.frame")
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56696052

复制
相关文章

相似问题

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