r 将列数未知的长数据整形为宽数据

2024-03-05

我确信这是微不足道的,但我找不到如何做到这一点。

我有一个数据框,其中有个人,每个人都可以有多个属性,并且每个属性都以多种方式分类。目前它是长条形的,记录看起来像这样(示意性的形式,实际上有点复杂):

IndividualID Property PropClass 
1            X         A 
1            Y         B 
2            X         A 
3            Y         B
3            W         C
3            Z         A

我想要的是每个单独的 ID 占一行,其中包含单独的 ID,然后是该个人在原始文件上拥有的每个属性和 PropClass 的成对列,因此在这种情况下:

 IndividualID  Prop1   PropClass1 Prop2  PropClass2  Prop3  PropClass3
 1             X       A          Y      B           NA     NA
 2             X       A          NA     NA          NA     NA
 3             Y       B          W      C           Z      A

因此,Prop 和 PropClass 变量的数量必须与原始数据集中任何 individualID 的最大行数(不大,大约 5)一样多,并且原始数据集中个体的行数少于该最大行数,对于该个人没有任何意义的额外列中包含 NA。个人的 Prop 和 PropClass 变量的顺序并不重要(尽管它也可能是长格式文件上的原始顺序)。

显然,如果对于 Prop 的每个可能值都有一对 Prop 和 propClass 列,那么很容易做到这一点(例如使用 reshape),但是 Prop 有数百个可能的值,因此文件会变得巨大且无用。我不敢相信没有一种简单的方法可以做我想做的事,但尽管在我看来是孜孜不倦的寻找,但我还没有找到它。请告诉我我是个白痴,如果是的话,我该如何治愈我的白痴。


可能有一种更有效的方法来做到这一点,但我现在想不出。对于需要转换为宽格式的两个变量,我认为您可能需要分别对它们进行转换,然后将两者合并在一起。但我很乐意被证明是错的。为此,我创建了两个新变量,它们为每个新 ID 生成一个列序列。这将使它们能够轻松地填充 NA。使用新列,可以很容易地将它们转换为正确的格式并将它们合并在一起。

library(plyr)
library(reshape2)

#Assumes your data is read into a variable named x
x <- ddply(x, "IndividualID", transform, 
      castPropClass = paste0("PropClass", seq(length(PropClass))),
      castProp = paste0("Prop", seq(length(Property))))

#Use these two new variables to cast into wide format. Wrap in merge to join together:
merge(dcast(IndividualID ~ castPropClass, value.var = "PropClass", data = x),
      dcast(IndividualID ~ castProp,      value.var = "Property",  data = x))
#Gives you this:
  IndividualID PropClass1 PropClass2 PropClass3 Prop1 Prop2 Prop3
1            1          A          B       <NA>     X     Y  <NA>
2            2          A       <NA>       <NA>     X  <NA>  <NA>
3            3          B          C          A     Y     W     Z

这显然没有正确的列“顺序”,但数据本身是正确的。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

r 将列数未知的长数据整形为宽数据 的相关文章

  • 为什么 rbind 会抛出警告

    这与是否有更优雅的方法将不规则的数据转换为整洁的数据框 https stackoverflow com questions 25102617 are there more elegant ways to transform ragged d
  • (R 错误)错误:cons 内存耗尽(达到限制?)

    我正在处理大数据 并且有一个 70GB 的 JSON 文件 我正在使用 jsonlite 库将文件加载到内存中 我尝试过 AWS EC2 x1 16large 机器 976 GB RAM 来执行此负载 但 R 因错误而中断 Error co
  • 如何转置 R markdown 文档中的表格?

    假设我打印一个名为summary table的数据框 如下所示 summary table data frame a c 1 2 3 b c 11 12 13 c c 21 22 23 d c 31 32 33 e c 41 42 43 f
  • R igraph - 保存布局?

    我想知道是否可以 保存 igraph 网络的布局 以便其他人能够重现相同的图表 目前 Fruchterman Reingold 算法总是创建一个新的网络 par mfrow c 1 2 g lt erdos renyi game 100 1
  • plot xts if (on == "years") { 中的错误:缺少 TRUE/FALSE 需要的值

    我正在尝试绘制 xts 对象 但出现有关年份的错误 xts 对象只有一个数值和一个 POSIXct 索引 下面的代码显示了 xts 和尝试绘图时的错误 关于需要对 xts 对象做什么才能正确绘制的任何想法 xTest lt as xts 3
  • 当我用一个观察值运行回归时,为什么“fastLm()”会返回结果?

    为什么fastLm 当我用一项观察进行回归时返回结果吗 下面为什么不lm and fastLm 结果相等吗 library Rcpp library RcppArmadillo library data table set seed 1 D
  • 如何在折线图中显示 Sep-12 格式的数据并抑制网格线和灰色背景?

    我正在努力使日期格式正确 数据已经是melt 格式 数据中有四个变量碰巧共享相同的数据 我只是想绘制一个简单的四线折线图 每个变量作为一条单独的线 并将 Sep 12 显示为最新数据点 我正在使用旧的 ggplot 请随意 我有两个问题 第
  • 如何在r中进行左连接[重复]

    这个问题在这里已经有答案了 我有两个数据集一和二 数据集一 a b c 111 a 1 112 b 2 113 c 3 114 d 4 115 e 5 数据集二 e d g 222 ss 11 111 ff 22 113 ww 33 114
  • 删除绘图轴值

    我只是想知道是否有一种方法可以消除 r 图中的轴值 分别是 x 轴或 y 轴 我知道axes false将摆脱整个轴 但我只想摆脱编号 删除 x 轴或 y 轴上的编号 plot 1 10 xaxt n plot 1 10 yaxt n 如果
  • 使用 lpSolve 优化 R 团队名单

    我是 R 新手 有一个想要解决的特定幻想运动队优化问题 我见过其他帖子使用 lpSolve 来解决类似的问题 但我似乎无法理解代码 下面的示例数据表 每个球员都在一个球队中 扮演着特定的角色 有薪水 并且每场比赛都有平均得分 我需要的限制是
  • R:计算自上次出现某个值以来的累积总和和计数

    给定简化数据 set seed 13 user id rep 1 2 each 10 order id sample 1 20 replace FALSE cost round runif 20 1 5 75 1 category samp
  • R 未获取用户库

    我有一个带 R 3 6 0 的 Fedora 30 系统 用户库设置在Renviron就像这个 R LIBS USER R LIBS USER R x86 64 redhat linux gnu library 3 6 事实上 它出现在交互
  • 如果指定了多个存储库,install.packages 的行为是什么?

    从文档中并不清楚如果在 install packages 中指定了多个存储库会出现什么行为 我的直觉告诉我 它将尝试第一个存储库 如果找不到包 它将尝试第二个存储库 依此类推 不幸的是 情况似乎并非如此 我看到的是 只尝试了第一个 并返回错
  • 读取多个 CSV 文件,并在文件开头跳过不同行数

    我必须阅读大约 300 个单独的 CSV 我已经成功使用循环和结构化 CSV 名称来自动化该过程 然而 每个 CSV 在开头都有 14 17 行垃圾 并且随机变化 因此在 read table 命令中硬编码 skip 参数将不起作用 每个
  • 使用开源闪亮服务器时,我的图标不会显示在我的应用程序的浏览器选项卡上

    我一直在尝试找到一种方法将 ico 与托管在开源闪亮服务器上的闪亮应用程序的快捷方式关联起来 最终 我希望 ico 显示为我的应用程序快捷方式的图形 而且 我希望用户在创建应用程序的快捷方式时显示 可用此图标 听起来很简单 但事实证明这是一
  • 如何使用 R 或 PowerShell 从文本文件中提取数据?

    我有一个包含如下数据的文本文件 This is just text Username SOMETHI C Text Account DFAG Finish time 1 JAN 2011 00 31 58 91 Process ID 202
  • R 在读取文件时添加额外的数字

    我一直在尝试读取一个包含日期字段和数字字段的文件 我的数据在 Excel 工作表中 如下所示 Date X 1 25 2008 0 0023456 12 23 2008 0 001987 当我在 R 中使用readxl read xlsx函
  • 准备编程竞赛的缩写和函数[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 获取所有参数作为列表

    R 是否提供对象 函数 方法 关键字来获取所有函数参数 使用一个例子 function a b default 会提供a and b也 在函数环境内 有没有类似的说法list 这还包括a and b在结果中 或者换一种方式 简写list a
  • 确定 R 中的组是否重复某个值

    我有一个包含许多列和行的数据 我想通过创建新的逻辑变量来确定某个组的值是否重复 相同 所以我的数据如下所示 v0 lt c 1 2 3 4 5 6 7 8 9 v1 lt c a b a c e c b b e v2 lt c R NA R

随机推荐

  • Heroku 不支持 Neo4j?

    我正在尝试使用 Neo4j 数据库部署 Spring boot 应用程序 但是当我在 Heroku 中找到插件时 我看不到它 如何将 Neo4j 数据库推送到 Heroku 请帮我 先感谢您 This news https docs gra
  • JTable - 复合编辑器焦点

    我有一个由多个组件组成的自定义编辑器 就像是 class MyCellEditor extends AbstractCellEditor implements TableCellEditor JTextArea textArea JButt
  • 如何配置 Hibernate、Spring 和 Apache dbcp 进行连接池?

    我在集成 Spring Hibernate 和 Apache DBCP 时遇到问题 我已经用过DBCPConnectionProvider from here http wiki apache org commons DBCP Hibern
  • 西班牙 Windows 的字符集

    西班牙 Windows 的字符集是什么 Spanish es iso 8859 1 windows 1252
  • 有没有自动更新Javadoc的工具?

    我工作的代码库 很混乱 这种混乱的一方面是我们有大量方法 其签名不再与关联的 Javadoc 匹配 例如 param foo public void doFoo int bar 我不喜欢生成的 Javadoc 因为它几乎总是毫无价值 但我确
  • Android - Webview进度条

    我在网络视图上方添加了进度条 每当我单击链接时 我都会使进度条可见 我想让进度条覆盖在网络视图上 并且我想显示进度条的百分比 我知道css 但我不知道如何改变android中进度条的位置
  • 如何在 Perl 中刷新反引号中的输出?

    如果我有这个 Perl 应用程序 print someshellscript sh 它会打印一堆内容并且需要很长时间才能完成 我如何在 shell 脚本执行过程中打印该输出 看起来 Perl 只会在完成时打印 someshellscript
  • 如何将数据从一个视图控制器传递到另一个 SWIFT

    我正在制作一个应用程序 其中带有搜索栏和范围栏的表格视图必须连接到详细视图控制器 并且该详细视图控制器必须根据选择的单元格显示数据 我有一个数组 其中设置了用于排序和搜索项目的结构 我需要保留此功能 我的详细视图控制器有另一个 swift
  • 打印文本区域文本 - 全长(高度)?

    我有一个网络表单 我的客户希望用户能够打印出来 使用 CSS 进行一些样式设置就可以很好地工作 但是 我有几个textaear字段 如果用户键入的内容超过文本区域的高度 则打印时该类型将被截断 我努力了textarea height 100
  • D3 中的折线和图例间距

    我使用下面的示例 希望在饼图之外有图例 并且还具有文本的折线以及每个切片的计数和百分比 使用当前代码 我在饼内有饼图 当我将鼠标悬停在切片上时 会显示文本和百分比 非常感谢您的帮助 谢谢 有人可以帮忙吗 因为我无法继续前进
  • 获取 linq 返回 IEnumerable 结果

    如何将以下 SQL 查询转换为 C 中的 LINQ 我不需要两个表中的所有列 结果集应该是 IEnumerable
  • 管道转换后获取 ngFor 中数组的长度

    我有以下模板 div Here is the length of my ngFor l div 不幸的是 ngFor 中不存在长度 如何解决此问题以使 ngFor 中的长度可用 另一种解决方案可能如下 div Here is the len
  • 我可以将 sqlbulkcopy 与 Azure SQL Paas 结合使用吗?

    我可以将 sqlbulkcopy 与 Azure SQL Paas 结合使用吗 我有一个可以批量复制到数据库的应用程序 我们正在使用 SQL PaaS 对其进行测试 SQLBulkCopy 似乎失败了 我以为我读到某处不支持此功能 但在 A
  • Canvas对象标签:不是我最初给它的类型

    我有一个画布 我向其中添加各种对象 例如文本对象等 我向每个画布子对象添加 标签 属性 在下面的示例中 我为绝对支持的 tag 属性添加了一个字典 import tkinter window tkinter Tk myCanvas tkin
  • Facebook 点赞按钮显示所有 Facebook 页面的点赞数均为 0

    更新 所以这很大 如果您尝试使用 赞 按钮链接到任何 Facebook 页面 则不会起作用 尝试访问 Facebook 之类的创建页面 http developers facebook com docs reference plugins
  • 在 Perl 中比较字符串时如何忽略重音符号?

    我有这个测验应用程序 我将人们输入的内容与正确的答案相匹配 现在 我所做的基本上是 if input answer i print you won 这很好 就好像答案是 鱼 一样 用户可以输入 一条鱼 并被视为一个好的答案 我面临的问题是
  • 获取 C 字符串中索引引用的字符

    我有一根绳子 char foo abcdefgh 我想写一个for循环 一一打印出所有字符 a b c etc 这是在C中 好吧 这是一个问题 所以我要回答它 但我的答案会有点不寻常 include
  • 为什么 Int32.MaxValue = 2147483648? [复制]

    这个问题在这里已经有答案了 我想知道为什么 NET 中 Int32 的最大可能值是 2147483647 而不是 2147483648 因为 2 1 2147483648 谢谢 An Int32以32位存储 而不是31位 其范围的一半由负数
  • 在 Mac(Chrome 和 Safari)上,文字看起来比 PC 上更粗体,为什么?

    在查看不同的操作系统时 我注意到 尤其是在 Chrome 和 Safari 中 Mac Book 上的文字看起来比 PC 上的文字更粗体 是不是只有浏览器 Web 套件才具有解释 CSS 和 HTML 的能力 而操作系统本身却没有呢 如果上
  • r 将列数未知的长数据整形为宽数据

    我确信这是微不足道的 但我找不到如何做到这一点 我有一个数据框 其中有个人 每个人都可以有多个属性 并且每个属性都以多种方式分类 目前它是长条形的 记录看起来像这样 示意性的形式 实际上有点复杂 IndividualID Property