在 R 中使用从宽到长的 Reshape [关闭]

2024-01-01

我正在尝试在 R 中将数据从宽到长重塑。

我的宽格式数据如下所示:

我有以下数据矩阵: 在行中我有不同的公司,在列中有来自不同年份的不同变量。 (收益_2012、收益_2011、收益_2010、...、tot_assets_2012、tot_assets_2011 等。

我想将其重新排列成长格式:

只有这些列:公司,年份,变量(收益,tot_assets,..)

我已经尝试了好几天了。我也咨询过http://www.ats.ucla.edu/stat/r/faq/reshape.htm http://www.ats.ucla.edu/stat/r/faq/reshape.htm寻求帮助,但我无法理解他们如何重塑数据以及如何分离年份。

预先感谢您的帮助。

regards

Gritti

PS:由于我是 R 的新手,并且 R 本身提供的帮助似乎相当技术性,因此我很欣赏任何有关非常简单的介绍的提示。


这是三个示例(以及我认为代表您所描述内容的一些示例数据)。

这是示例数据:

set.seed(1)
mydf <- data.frame(
  company = LETTERS[1:4],
  earnings_2012 = runif(4),
  earnings_2011 = runif(4),
  earnings_2010 = runif(4),
  assets_2012 = runif(4),
  assets_2011 = runif(4),
  assets_2010 = runif(4)
)

mydf
#   company earnings_2012 earnings_2011 earnings_2010 assets_2012 assets_2011 assets_2010
# 1       A     0.2655087     0.2016819    0.62911404   0.6870228   0.7176185   0.9347052
# 2       B     0.3721239     0.8983897    0.06178627   0.3841037   0.9919061   0.2121425
# 3       C     0.5728534     0.9446753    0.20597457   0.7698414   0.3800352   0.6516738
# 4       D     0.9082078     0.6607978    0.17655675   0.4976992   0.7774452   0.1255551

选项1:reshape

一个限制是它无法处理“不平衡”数据集(例如,如果您的数据中没有“assets_2010”,则这将不起作用)。

reshape(mydf, direction = "long", idvar="company", 
        varying = 2:ncol(mydf), sep = "_")
#        company time   earnings    assets
# A.2012       A 2012 0.26550866 0.6870228
# B.2012       B 2012 0.37212390 0.3841037
# C.2012       C 2012 0.57285336 0.7698414
# D.2012       D 2012 0.90820779 0.4976992
# A.2011       A 2011 0.20168193 0.7176185
# B.2011       B 2011 0.89838968 0.9919061
# C.2011       C 2011 0.94467527 0.3800352
# D.2011       D 2011 0.66079779 0.7774452
# A.2010       A 2010 0.62911404 0.9347052
# B.2010       B 2010 0.06178627 0.2121425
# C.2010       C 2010 0.20597457 0.6516738
# D.2010       D 2010 0.17655675 0.1255551

选项 2:“reshape2”包

因其语法而相当受欢迎。需要进行一些处理才能工作,因为需要拆分列名才能获得这种“双宽”类型的数据。能够处理不平衡的数据,但如果您的不同列具有不同的列类型(数字、字符、因子),则不会是最好的。

library(reshape2)
dfL <- melt(mydf, id.vars="company")
dfL <- cbind(dfL, colsplit(dfL$variable, "_", c("var", "year")))
dcast(dfL, company + year ~ var, value.var="value")
#    company year    assets   earnings
# 1        A 2010 0.9347052 0.62911404
# 2        A 2011 0.7176185 0.20168193
# 3        A 2012 0.6870228 0.26550866
# 4        B 2010 0.2121425 0.06178627
# 5        B 2011 0.9919061 0.89838968
# 6        B 2012 0.3841037 0.37212390
# 7        C 2010 0.6516738 0.20597457
# 8        C 2011 0.3800352 0.94467527
# 9        C 2012 0.7698414 0.57285336
# 10       D 2010 0.1255551 0.17655675
# 11       D 2011 0.7774452 0.66079779
# 12       D 2012 0.4976992 0.90820779

选项 3:merged.stack来自“分裂堆叠形状”

merged.stack我的“splitstackshape”包具有非常简单的语法,如果您需要最终得到这种“双宽”类型的结构,应该会非常快。它的创建是为了能够处理不平衡的数据,并且由于它单独处理列,因此在转换列类型时不会出现问题。

library(splitstackshape)
merged.stack(mydf, id.vars="company", 
             var.stubs=c("earnings", "assets"), sep = "_")
#     company .time_1   earnings    assets
#  1:       A    2010 0.62911404 0.9347052
#  2:       A    2011 0.20168193 0.7176185
#  3:       A    2012 0.26550866 0.6870228
#  4:       B    2010 0.06178627 0.2121425
#  5:       B    2011 0.89838968 0.9919061
#  6:       B    2012 0.37212390 0.3841037
#  7:       C    2010 0.20597457 0.6516738
#  8:       C    2011 0.94467527 0.3800352
#  9:       C    2012 0.57285336 0.7698414
# 10:       D    2010 0.17655675 0.1255551
# 11:       D    2011 0.66079779 0.7774452
# 12:       D    2012 0.90820779 0.4976992
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 R 中使用从宽到长的 Reshape [关闭] 的相关文章

  • R 中的插补 MICE 仍不存在于数据集中

    运行 MICE 包后 5 个完整插补集中的缺失值数量从 147428 减少到 46093 但不是应该是 0 NA 吗 Thanks 这是我的 MICR 代码 imp mice newdata imputationSet1 complete
  • 如何使用 gvisMotionChart 处理 POSIXlt 格式时间?

    The googleVisR软件包出奇的好 然而 我对一个问题感到困惑gvisMotionChart关于 timevar 因为我的数据集中的时间是POSIXlt格式 例如 2009 07 02 19 00 00 2009 07 02 20
  • 将嵌入其他文本的长州名称转换为两个字母的州缩写

    我的目标是识别以具有其他文本的字符向量写出的美国各州 并将各州转换为缩写形式 例如 北卡罗来纳州 到 北卡罗来纳州 如果向量只有长形式的状态名称 那就很简单 但是 我的向量在随机位置有其他文本 如示例 states 中所示 states l
  • 导入 mgcv 失败,因为找不到 Rlapack.dll

    我想通过使用链接到 IronPython 中的 R 统计包R NET http rdotnet codeplex com 图书馆 它一直工作得很好 但现在我需要使用 R 的mgcv http cran r project org web p
  • 保存 d3heatmap 生成的热图

    我正在尝试保存由d3heatmap https github com rstudio d3heatmap转换为 pdf 文件 但文件总是损坏 library d3heatmap pdf file heat pdf d3heatmap mtc
  • 如何使用Shiny中的下载按钮?

    我想下载一个csv使用 Shiny 中的下载按钮下载文件 该文件将使用辅助 r 脚本中的参数创建 SERVER output downloadData lt downloadHandler filename function paste d
  • 在 RGUI 中自动保存 R 源

    是否可以告诉 RGui 自动保存 R 源代码 以便它们在系统崩溃时不会丢失 我非常怀念这个功能 因为我的系统时不时地崩溃 而且我不想仅仅因为需要这个功能而使用 R Studio 或其他一些 IDE 我喜欢 RGui 提供的简单性 None
  • 查找表中第三个四分位数以上的频率

    我有一个大数据框架 对 57 个变量的超过 239k 观察值 其中包含一些疾病描述以及针对不同年龄段的人针对这些疾病使用的药物 我想在每种疾病描述的使用频率前四分之一中找到这些药物 为了制作一个可重现的示例 我创建了一个包含 1000 个观
  • R Shinydashboard 根据选项卡选择显示/隐藏 UI 元素

    如果有人可以提供帮助 我正在努力满足要求 我必须根据用户的选项卡面板选择在仪表板侧栏上显示 隐藏一些元素 这是 UI 代码的一部分 可让您了解我的应用程序的结构 我需要仅在 tabpPanel 2 上显示 Fourthoutput Fift
  • R Markdown 文档标题中的希腊字母

    R markdown 文档的标题中是否可以包含希腊字母 我试过这个 title Amylase author author date 8 March 2017 output pdf document keep tex true toc ye
  • 将 RMarkdown 文档编织为 Word 时方程式和引用丢失

    我不确定这个问题是否更适合LaTeX论坛 我将其发布在这里是因为我怀疑问题更多是关于knitr和 RMarkdown 相比于 LaTeX 我在 RStudio 中有以下 RMarkdown 文档 title Capricious Behav
  • 成对散点图;一对多[重复]

    这个问题在这里已经有答案了 有没有一种简洁的方法来创建pairs仅将一个变量与许多其他变量进行比较的图 换句话说 我可以只绘制标准的一行或一列吗 pairs不使用循环的散点图矩阵 融化你的数据 然后使用带有facet的ggplot libr
  • 根据用户输入将 n 个反应式单选按钮添加到闪亮的应用程序

    我正在尝试创建一个闪亮的应用程序 用户可以在其中从数据框中选择变量以便对数据进行子集化 输出 最终 将是包含用户子集的数据表 我需要根据用户为子集选择的变量数量创建 n 个输入框 理想情况下 输入框将是动态单选按钮 用于子集因子 我还没有开
  • 难以理解 R 中双括号和单括号子集之间的区别[重复]

    这个问题在这里已经有答案了 我很难理解双括号子集和单括号子集之间的区别 我在开源编程方面相当陌生 我很难理解 R 中的 help 函数 因为考虑到我目前对 R 的理解 其中的一些信息对我来说太技术性了 我尝试过谷歌搜索差异 虽然它给了我一个
  • 替换因子列中的

    我想更换
  • 基于列重复数据集中的行,但增加行[重复]

    这个问题在这里已经有答案了 我有一个数据集 其中包含项目名称 开始年份和合同期限 我需要将这个数据集开发成时间序列 例如 我的数据集中的一行是 项目 A 开始年份 2003 年 合同期限 5 我想根据合同期限重复每一行 我的数据集如下所示
  • 从 glmnet 获取变量选择顺序

    我一直在使用 glmnet R 包为一个目标变量 Y 数字 和 762 个协变量构建 LASSO 回归模型 我使用 glmnet 函数 然后coef fit s 0 056360 获取该特定 lambda 值的系数值 我现在需要的是变量选择
  • 提取模型摘要并将其存储为新列

    我是新来的purrr范例并正在努力解决它 根据一些来源 我已经设法嵌套一个数据框 在嵌套数据上运行线性模型 从每个 lm 中提取一些系数 并为每个 lm 生成摘要 我想做的最后一件事是从摘要中提取 r squared 我原以为这将是我想要实
  • 拆分并保存在新的 data.frames 中

    我有一个大 data frame 144 列 我想将其分成每组 3 列 子文件或子 data frame 然后将子 data frame 保存在单独的文件中 换句话说 file1 将包含从 1 到 3 的列 file2 将包含从 6 到 9
  • 在另一列的字符串中搜索一列中的文本

    这里是 R 新手 一直在搜索此论坛 尝试找到一种在同一行数据的字符串中搜索文本的方法 我以前使用过 grepl 但无法让它向下查找列并对每一行应用检查 我觉得这是一个简单的解决方案 但我花了几个小时 但似乎无法得到它 基本上我有类似下面第

随机推荐

  • 如何在rails3中使用amistad gem?

    我需要有关如何在 Rails3 应用程序中实现 AMISTAD gem 的帮助 请建议一些教程或观点 我看到了 github amistad 链接 但我想要对这颗宝石进行全面报道 请帮我 gem 创建者请给我发送一个如何使用 GEM 的示例
  • 是否可以在 android 中使用 Actionbar sherlock 在操作菜单项中实现切换按钮

    我有一个应用程序 它在操作菜单项中有切换按钮 尽管我使用的是 Actionbar Sherlock 但我不知道如何将切换按钮放置在操作菜单项中 我不想将其作为自定义布局放置在操作栏中 但我想将其放置为菜单项 如果有人找到解决方案 请帮助我
  • Google Analytics(分析)不会跟踪 iOS 上的视图?

    我已将最新的 Google Analytics SDK 添加到我的 iOS 应用程序中 版本 2 0 beta 4 我按照指南所述进行了相同的操作 并将以下代码添加到应用程序委托中 Optional automatically send u
  • 如何从现有的 github 项目添加 helm 存储库?

    我有一个现有的 github 项目 我想创建 添加一个helm文件夹到项目中以存储 helm yaml 文件 我想引用这个 github 项目 文件夹来充当我的本地 开发环境中的 helm 存储库 我知道我可以将图表添加到我的本地 默认 h
  • 为Unity构建一个简单的在线游戏服务器

    我正在尝试为我的坦克游戏 2D Unity 构建一个在线游戏服务器 在我的游戏中会有2 4名玩家控制他们的坦克并互相战斗 我尝试过使用 Unity 网络 它不太适合我的游戏 因为我们必须选择房间中的 1 名玩家作为 服务器 这对于我未来的开
  • 固定分配 std::vector

    我是一名嵌入式软件开发人员 因此我不能总是使用所有优秀的 C 功能 最困难的事情之一是避免动态内存分配 因为它对于所有 STL 容器来说都是通用的 The std vector然而 在处理可变数据集时非常有用 但问题是分配 例如std re
  • 将命令行参数传递给 Clozure common lisp

    我之前熟悉python 现在我正在尝试学习common lisp并在windows系统下使用ccl clozure common lisp 我发现没有一种方便的方法来将 lisp 文件作为 python 运行 所以我写了一个bat文件来编译
  • 无法访问映射到 docker 容器端口的主机上的端口

    我已经使用命令启动了一个 docker 容器 sudo docker run it P d plcdimage 该映像是使用具有 EXPOSE 8080 指令的 Dockerfile 构建的 容器运行 jboss 服务器 并在其上部署了应用
  • 如何从函数(UDF)返回表变量?

    我正在使用 SQL Server 2012 并且一直在尝试许多不同的方法来从函数内部返回表变量 但我无法让它工作 我尝试过将变量声明移动到不同的位置等 这是 sql 的核心内容 如果您可以将内容包装在一个 UDF 函数中 该函数实际编译并返
  • 在 Android 上以编程方式发送彩信

    我在执行一项任务时遇到了问题 我应该在 android 2 1 上使用我们自己的界面发送彩信 所以你可以猜测调用默认的 Activity 是不可能的 所以我的问题是 有没有一种方法可以使用 android SDK 以编程方式发送彩信 没有说
  • 如何将 Twitter 小部件插入 GWT 视图

    我有一个在 GWT 应用程序中创建的视图 我想嵌入 使用 twitter 提供的 Twitter 小部件之一 就像这个 http twitter com about resources widgets widget search http
  • 向脚本添加密码屏蔽

    为了练习 我正在编写一个程序来隐藏文件夹 程序本身运行良好 但我想用星号 屏蔽我的输入 我找到了将输入屏蔽为独立脚本的代码 但我无法找到将代码集成到我的代码中的方法 任何帮助将不胜感激 程序代码 echo off color 5F titl
  • 核心数据 - 放弃更改

    希望有人能解释一下发生了什么事 如果我从核心数据模型中获取一个对象 请修改模型中未保留甚至未定义的属性 然后销毁并再次获取该对象 该值仍为先前设置的值 为什么是这样 Promotion promotion Promotion promoti
  • 更改 user.home 系统属性

    如何从 java 程序外部更改 user home 系统属性 以便它认为它是与 D Documents and Settings USERNAME 不同的目录 通过环境变量还是虚拟机参数 设置 VM 参数应该有效 java Duser ho
  • 使用 xlrd 从 Python 中的 Excel 工作表超链接获取 URL

    我正在尝试使用 xlrd 获取 Excel 工作表第二列中元素的超链接 URL 使用时 book open workbook mypath formatting info True sheet book sheet by index 0 r
  • 了解两个不同大小矩阵的 np.corrcoef 输出

    我想计算每个之间的相关性列向量矩阵的A与每个列向量矩阵的B 考虑 vectorsize 777 A np random rand vectorsize 64 B np random rand vectorsize 36 corr np co
  • 在 JavaScript 原型函数中保留对“this”的引用[重复]

    这个问题在这里已经有答案了 我刚刚开始使用原型 JavaScript 但在弄清楚如何保存this当作用域发生变化时 从原型函数内部引用主对象 让我解释一下我的意思 我在这里使用 jQuery MyClass function this el
  • emacs 是否为 html 模式提供隐藏显示

    emacs 是否具有隐藏 显示 html 代码折叠功能 当我使用 org 模式时 我有它 但似乎无法在 nXML html 端找到它 我为 mhtml mode 编写了这个 它运行得很好 它可以通过标签折叠 HTML 以及嵌入的 CSS 和
  • 如何将(参考)Quick book 的 dll 添加到 silverlight 项目?

    我正在使用 silverlight 项目 在此我必须使用 Quick books SDK QBFC 但问题是 silverlight 不允许其他组装 因为 Silverlight 使用不同的运行时和常规 Net 框架的子集 这就是为什么我们
  • 在 R 中使用从宽到长的 Reshape [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我正在尝试在 R 中将数据从宽到长重塑 我的宽格式数据如下所示 我有以下数据矩阵 在行中我有不同的公司 在列中有来自不同年份的不同变量 收