合并(与拆分相反)r 中的行对

2024-01-09

我有如下的专栏。每列有两对,每对带有后缀“a”和“b” - 例如 col1a、col1b、colNa、colNb 等,直到文件末尾(> 50000)。

mydataf <- data.frame (Ind = 1:5, col1a = sample (c(1:3), 5, replace = T), 
   col1b = sample (c(1:3), 5, replace = T),  colNa = sample (c(1:3), 5, replace = T),
   colNb = sample (c(1:3),5, replace = T),
     K_a = sample (c("A", "B"),5, replace = T),  
    K_b = sample (c("A", "B"),5, replace = T))

mydataf 
   Ind col1a col1b colNa colNb K_a K_b
1   1     1     1     2     3   B   A
2   2     1     3     2     2   B   B
3   3     2     1     1     1   B   B
4   4     3     1     1     3   A   B
5   5     1     1     3     2   B   A

除了第一列(Ind)之外,我想折叠这对行以使数据框如下所示,同时删除后缀“a”和“b”。也合并字符或数字顺序为1先于2,A先于B

   Ind col1   colN  K_
    1   11     23   AB   
    2   13     22   BB
    3   12     11   BB
    4   13     13   AB
    5   11     23   AB   

编辑:如果列名相似,答案中的 grep 函数(可能)会出现问题。

mydataf <- data.frame (col_1_a = sample (c(1:3), 5, replace = T),
   col_1_b = sample (c(1:3), 5, replace = T),  col_1_Na = sample (c(1:3), 5, replace = T),
   col_1_Nb = sample (c(1:3),5, replace = T),
     K_a = sample (c("A", "B"),5, replace = T),
    K_b = sample (c("A", "B"),5, replace = T))
n <- names(mydataf)
nm <- c(unique(substr(n, 1, nchar(n)-1)))
df <- data.frame(sapply(nm, function(x){
                             idx <- grep(x, n)
                             cols <- mydataf[idx]
                             x <- apply(cols, 1,
                                       function(z) paste(sort(z), collapse = ""))
                             return(x)
                            }))
names(df) <- nm
df

 col_1_ col_1_N K_
1   2233      23 BB
2   2233      22 BB
3   1123      13 AB
4   1223      12 AB
5   2333      33 AB

mydataf
  Ind col1a col1b colNa colNb K_a K_b
1   1     2     1     1     1   A   A
2   2     1     2     1     3   B   A
3   3     1     2     3     2   A   A
4   4     1     2     3     1   A   B
5   5     1     2     2     1   A   A
n <- names(mydataf)
nm <- c("Ind", unique(substr(n, 1, nchar(n)-1)[-1]))
df <- data.frame(sapply(nm, function(x){
                             idx <- grep(paste0(x, "[ab]?$"), n)
                             cols <- mydataf[idx]
                             x <- apply(cols, 1, 
                                       function(z) paste(sort(z), collapse = ""))
                             return(x)
                            }))
names(df) <- nm
df
  Ind col1 colN K_
1   1   12   11 AA
2   2   12   13 AB
3   3   12   23 AA
4   4   12   13 AB
5   5   12   12 AA
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

合并(与拆分相反)r 中的行对 的相关文章

随机推荐

  • Django + AWS S3 Bucket:对 S3 Bucket 进行身份验证访问

    我有一个带有特殊目录的 S3 存储桶 我正在转储用户上传的图像 我希望将这些图像限制为经过身份验证的用户 它不应仅限于上传图像的用户 我真的试图避免为此设置数据库模型 有没有办法阻止匿名会员上传图片 所以 我有两个问题 如何设置匿名用户阻止
  • 返回数字的总和(正数或负数)

    我需要创建一个函数 它接受一个数字并返回其数字之和 如果该数字为负数 则在添加数字时第一个数字应被视为负数 这就是我所拥有的 var arrx var oper var others 0 function sumDigits num you
  • 如何使用 R 中的加权(调查)数据制作漂亮的无边界地理专题/热图,可能对点观测使用空间平滑

    自从约书亚 卡茨发表这些方言地图 http spark rstudio com jkatz SurveyMaps 你可以找到 using 哈佛大学方言调查 http www4 uwm edu FLL linguistics dialect
  • cron 上的屏幕截图显示背景而不是窗口内容

    在 macOS 上 Catalina 在通过 cron 进行屏幕截图时遇到问题 手动运行时do screenshot sh脚本然后一切都很好 但是当它在 cron 问题上自动运行时 只有菜单正确 而不是窗口内容显示 macOS 背景 见图
  • 如何在 Android 中使用 WMS 和 WFS

    我对整个 Geo IT 材料是全新的 我的任务是检查一些在 Android 中查看地图的方法 并覆盖了矢量数据 我有 WMS 和 WFS 服务 可以从中获取数据 但如何将其集成到 Android 中呢 Google Maps Api 不是免
  • window 对象在 Chrome 和 IE 中表现奇怪

    考虑以下 HTML 示例 div div 以及以下脚本 var about function window document use strict var methods methods init function Do things he
  • 如何在 R 中一起绘制两个直方图?

    我正在使用 R 并且有两个数据框 胡萝卜和黄瓜 每个数据框都有一个数字列 列出所有测量的胡萝卜 总计 100k 胡萝卜 和黄瓜 总计 50k 黄瓜 的长度 我希望在同一个图上绘制两个直方图 胡萝卜长度和黄瓜长度 它们重叠 所以我想我还需要一
  • django-tastypie PATCH 给了我一个“400(错误请求)”

    我正在 Apache 上运行一个 Django 站点 该站点以 Nginx 实例为前端 为我的静态媒体提供服务 我通过 django tastypie 将 API 暴露给需要修补字段的模型 当我进行本地测试 通过 django runser
  • 数组衰减为指针的异常?

    我在许多帖子中看到 在大多数情况下 数组名称会退化为指针 我可以知道在什么情况 表达式下数组名称不会衰减为指向其第一个元素的指针吗 Sure 在C99中存在三种基本情况 即 当它是争论的时候 地址 运算符 当它是争论的时候sizeof操作员
  • 如何使用 libphonenumber 以国际格式格式化电话号码。

    In the 文档 https github com googlei18n libphonenumber由Github上的libphonenumber提供 有一个demo https rawgit com googlei18n libpho
  • view.getId() 在 OnItemClickListener 中返回错误的 id

    在我的应用程序中 我有一个包含一些图像的图库 当用户选择图像时 我想以某种方式检索所选图像的 id getId 返回的 int 为 1 为什么我无法获取所选图像的系统 ID gallery setOnItemClickListener ne
  • 使用左连接的 LINQ orderby FK

    我有以下代码 from categories in context SCT Categories join categoryOrders in context SCT CategoryOrders on categories ID equa
  • 如何在 Firefox 中正确渲染@font-face?

    我正在尝试对 Chrome Safari Firefox 和 IE 使用 font face 对于 IE 我什至不知道该怎么做 但对于其他浏览器 我希望 font face 部分能够工作 这是我用过的 font face font fami
  • ruby 从数组中删除一个元素

    我想从数组中按值删除 仅一个 元素 例子 x 1 2 3 2 x remove 2 result x 1 3 但是 我想得到 1 3 2 thanks 正如 7urkm3n在评论中提到的 你可以使用x delete at删除第一个出现的位置
  • Git hooks - 从远程存储库传播?

    我目前正在寻求将现有的 SVN 存储库转换为 git 然后在允许推送之前使用 Reviewboard 进行审核 我最近才开始使用 git 而且远不是这方面的专家 但是我想做的是有一个预推送钩子 它运行 后审查 以将更改提交到 ReviewB
  • 为什么不允许调用main函数?

    C 03 3 6 1 3 不得在程序中使用 main 函数 3 2 我想知道为什么这条规则存在 有人知道如果使用 main 会出现问题的任何系统 实现吗 附 1 我知道这个词的定义used 2 我知道有一些简单的解决方法 例如从 main
  • 找不到提供者 docker - Vagrant

    每当我跑步时vagrant up provider docker 我收到此错误消息 The provider docker could not be found but was requested to back the machine d
  • 为什么 gcc 不会对 int 和 char 产生类型不匹配警告?

    为什么在 gcc 中编译以下代码不会产生任何类型不匹配警告 1属于类型int and f 期望类型char void f char c int main void f 1 return 0 即使我们明确指定类型 也不会出现警告 void f
  • 混合 fdopen() 和 open() -> 错误的文件描述符

    int source open hi O CREAT O RDONLY int dest open resultfile O CREAT O RDWR O TRUNC FILE source1 fdopen source r FILE de
  • 合并(与拆分相反)r 中的行对

    我有如下的专栏 每列有两对 每对带有后缀 a 和 b 例如 col1a col1b colNa colNb 等 直到文件末尾 gt 50000 mydataf lt data frame Ind 1 5 col1a sample c 1 3