如何在 R 中将多行合并为一个观察

2024-01-27

我对 R 比较陌生,我有点沉迷于尝试将我的数据转换成合适的格式。看起来重塑包可能对此有用,但我没有得到更多。

我有一个数据框,其中一列(V4)包含字符串和数字。我想按 V2 和 V1 中给出的分组拆分 V4,并将结果作为三个单独的列附加到数据框。

编辑:由于我原来的示例数据框没有完全捕获问题的复杂性,这里有一个更准确的示例:

>df <- data.frame(V1=c(rep("SN", 8),rep("JK", 4)), 
             V2=c(1,1,2,2,2,3,3,3,1,1,2,2), 
             V3=c("Picture", "Response", "Sound", "Sound", "Response", "Sound", "Sound", "Response", "Sound", "Response", "Sound", "Sound"), 
             V4=c("Photo", "100", "XYZc02i03", "XYZq02i03", 200, "ZYXc01i30", "ZYXq01i30", 100, "XYZc02i40", 200, "XYZc02i03", "XYZq02i03" ), 
             stringsAsFactors=FALSE)


>V1 V2       V3        V4
 SN  1  Picture     Photo
 SN  1 Response       100
 SN  2    Sound XYZc02i03
 SN  2    Sound XYZq02i03
 SN  2 Response       200
 SN  3    Sound ZYXc01i30
 SN  3    Sound ZYXq01i30
 SN  3 Response       100
 JK  1    Sound XYZc02i40
 JK  1 Response       200
 JK  2    Sound XYZc02i03
 JK  2    Sound XYZq02i03

我想要得到这样的东西:

   V1  V2       V3          V4        V5   V6
   SN   1  Picture       Photo        NA  100
   SN   2    Sound   XYZc02i03 XYZq02i03  200
   SN   3    Sound   ZYXc01i30 ZYXq01i30  100
   JK   1    Sound   XYZc02i40        NA  200
   JK   2    Sound   XYZc02i03 XYZq02i03   NA

编辑:我在 V2 中并不总是具有相同数量的观察值,这意味着我想要获取的数据框中可能缺少 V4、V5 或 V6 的值。

Edit2:V6 应该映射到 V3、V4 和 V5 的“响应”变量,理想情况下按连续顺序映射到 V3 的“声音”值。

我将非常感谢任何有关如何解决此问题的建议。或者,如果这个问题已在其他地方解决但我错过了,那么链接也很棒。


你不需要cbind在你的定义中df。你会使用这样的东西:

df <- data.frame(V1=rep("SN", 6), 
                 V2=rep(2:3, each=3), 
                 V3=c("Sound", "Sound", "Response", "Sound", "Sound", "Response"), 
                 V4=c("XYZc02i03", "XYZq02i03", 200, "ZYXc01i30", "ZYXq01i30", 100), 
                 stringsAsFactors=FALSE)

但是给定一个像您所描述的那样的数据框,您可以通过以下方式获得所需的结果:

max.subset.len <- 3 # or maybe max(sapply(split(df, list(df$V1, df$V2)), FUN=nrow))
fun <- function(v4) {length(v4) <- max.subset.len; v4}
agg <- aggregate(df$V4, by=list(df$V1, df$V2), FUN=fun)
results <- cbind(agg[1:2], agg[[3]])
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 R 中将多行合并为一个观察 的相关文章

随机推荐

  • 如果Android应用程序在可调试的情况下发布会发生什么?

    黄金法则是在向公众发布 Android 应用程序之前将可调试选项设置为关闭 如果我打开 忘记关闭 此选项会发生什么 我的意思是 它会如何向用户体现 我测试了一下 没有发现任何区别 它如何向用户体现 普通用户不会注意到其中的差异 顺便一提 支
  • Python:Selenium Firefox Webdriver 失败并出现错误:“无法加载配置文件...WARN addons.xpi...”

    我正在尝试运行以下 Python 代码来通过 Selenium 创建 Firefox Webdriver 窗口 from selenium import webdriver driver webdriver Firefox driver g
  • 如何将阿拉伯数字转换为int?

    我在 C 中工作一个项目 需要使用阿拉伯数字 但它必须作为整数存储在数据库中 我需要一个解决方案将阿拉伯数字转换为 C 中的 int 请问有什么解决办法或帮助吗 提前致谢 来自评论 我有阿拉伯数字 如 必须转换为 1 2 3 或 转换为 2
  • 将具有子项的实体类型发布到 (MVC Web Api) OData 服务

    我一直在寻找以下问题的答案 但到目前为止还没有找到 OData 标准是否支持执行包含带有子实体对象的实体对象的 POST 请求 如果是这样 ASP NET MVC Web Api OData 框架 EntitySetController 支
  • 唯一ID计数器

    过去几天我发布了几个有关我正在开发的 Google Apps 脚本 Web 应用程序的问题 到目前为止 Serge 在这里非常有帮助 该脚本的帖子是here https stackoverflow com questions 1530251
  • Intellij 警告:从未使用该方法的返回值

    我有一些代码看起来没问题 但 Intellij IDEA 警告其许多方法return价值观 从未使用该方法的返回值 这是下面的实际代码 一个构建器类 public static class StreamParserBuilder optio
  • Google Colab 中的 Tensorflow Federated 教程在初始化代码片段中给出错误

    这是开始教程之前需要运行的单元 test skip true tensorflow federated nightly also bring in tf nightly which can causes a duplicate tensor
  • facebook登录空指针异常android

    我通过 stackoverflow 进行了很多搜索 但找不到解决我的问题的答案 因此我发布此内容 我有一个示例 Android 应用程序 我尝试在其中使用 facebook 登录 以下是我遵循的步骤 环境 Android Studio An
  • 使用 jQuery 检查加载时是否已选中复选框

    我目前正在使用 some box click function main box toggle 效果很好 除非复选框是保存复选框状态的页面的一部分 如果将复选框保存为选中状态 则主框 单击该复选框时会显示 在重新加载时隐藏 并且仅在单击该复
  • AngularJS $http 拦截器

    JavaScript 代码 commonApp angular module commonApp config function httpProvider httpProvider interceptors push myHttpInter
  • 导航抽屉组标题 - 如何设置?

    我有一个菜单 其中包含如下所示的组 是否可以为每个组设置标题 我知道这对于子菜单是可能的 但是第一级组呢 menu menu
  • 在redis服务器上设置spring会话

    我正在使用 Spring Boot 编写我的其余 api 我正在尝试维护 redis 服务器上的用户会话 Redis 已启动并在默认端口上运行6379 我使用生菜罐连接到 redis 服务器 但似乎我的会话没有在 Redis 服务器上设置
  • Pandas 对两个数字之间的列的操作

    目前使用 Pandas 和 Numpy 我有一个名为 df 的数据框 假设我有以下数据 如何根据 Between 子句为第三列提供一个值 我想将其视为矢量化方法如果可能的话 保持我已有的速度 我尝试过 lambda 函数 但坦率地说 我不明
  • 如何获取 PHP 数组中的最后 n 个项目作为另一个数组?

    如何在 PHP 中获取另一个数组的最后 n 个项目的数组 n等于您想要结束的项目数 arr array slice old arr n
  • 如何预加载 Activity?

    我到处寻找这个问题 但似乎没有人有答案 我的简单问题是 有没有办法预加载活动 我需要这个 因为我使用一个选项卡 并且一个选项卡有多个活动 我的活动之一是 RSS 阅读器 它加载非常困难 大约 2 3 秒 我在网上找到的都是一个笑话 每个人都
  • 与单个表的多个 toMan 关系

    我是新来的greenDAO http greendao orm com 我正在编写 DaoGenerator 我遇到的一个问题是我有一个用户表和一个墙柱表 我希望能够在 wallpost 表中有两列 它们与用户表 墙所有者和发帖用户 有 t
  • 执行大型 SQL 脚本(使用 GO 命令)

    我需要从 C 程序中执行大量 SQL 语句 创建一堆表 视图和存储过程 这些语句需要用分隔符分隔GO陈述 但是SqlCommand ExecuteNonQuery 不喜欢GO声明 我的解决方案 我想我会发布以供参考 是将 SQL 字符串拆分
  • 在 R 中转换为带有冒号和逗号的数字字符串[重复]

    这个问题在这里已经有答案了 请帮忙看一下下面的例子 a lt 1 4 20 25 30 40 我需要转换a到一个数字向量 就好像我没有引号一样a 我的意思是 gt c 1 4 20 25 30 40 1 1 2 3 4 20 21 22 2
  • Outlook 规则运行 VBA 脚本将电子邮件正文传递给外部程序

    我设置了一个过滤电子邮件的 Outlook 规则 我想运行一个外部程序 python 脚本 来解析每封这样的电子邮件 我知道 SHELL 函数 但我需要一种方法将电子邮件正文传递给我的外部程序 Google 是你的朋友 我通过搜索 outl
  • 如何在 R 中将多行合并为一个观察

    我对 R 比较陌生 我有点沉迷于尝试将我的数据转换成合适的格式 看起来重塑包可能对此有用 但我没有得到更多 我有一个数据框 其中一列 V4 包含字符串和数字 我想按 V2 和 V1 中给出的分组拆分 V4 并将结果作为三个单独的列附加到数据