使用pivot_longer将水平格式重塑为长格式

2023-12-05

我正在尝试使用之前提供的相同代码将数据重塑为长格式而不是宽格式link但多次尝试修改后还是不行names_pattern = "(.*)_(pre|post.*)",

我的数据样本是

data1<-read.table(text="
Serial_ID   pre_EDV pre_ESV pre_LVEF    post_EDV    post_ESV    post_LVEF
1   76.2    32.9    56.8    86.3    36.6    57.6
2   65.4    35.9    45.1    60.1    26.1    56.7
3   64.4    35.1    45.5    72.5    41.1    43.3
4   50      13.9    72.1    46.4    18.4    60.4
5   89.6    32      64.3    70.9    19.3    72.8
6   62      20.6    66.7    55.9    17.8    68.2
7   91.2    37.7    58.6    61.9    23.8    61.6
8   62      24      61.3    69.3    34.9    49.6
9   104.1   22.7    78.8    38.6    11.5    70.1
10  90.6    31.2    65.6    48      16.1    66.4", sep="", header=T)

我想将我的数据重塑为

  1. 将相同的列标题放在彼此下方,例如下面的 post_EDV 前EDV
  2. 创建新列前与后
  3. 修复列标题(将“前”和“后”删除为仅“EDV”(如下面的屏幕截图所示))。

enter image description here

这是使用的代码:

library(dplyr);library(tidyr);library(stringr)
out <- data %>% pivot_longer(cols = -Serial_ID, 
           names_to = c(".value", "prevspost"), 
           names_pattern =  "(.*)_(pre|post.*)",
           names_sep="_") #%>% as.data.frame

我也尝试过names_prefix = c("pre_","post_")代替names_pattern = "(.*)_(pre|post.*)",但它不起作用。

任何建议将不胜感激。


Edit我建议使用@Dave2e's优越的方法.

您的尝试失败的原因是模式必须按顺序匹配。你可以试试这个:

library(tidyr)
library(dplyr) 
data1 %>% pivot_longer(cols = -Serial_ID, 
           names_to = c("prevspost",".value"), 
           names_pattern =  "(pre|post)_(\\w+)") %>%
   dplyr::arrange(desc(prevspost),Serial_ID)
# A tibble: 20 x 5
   Serial_ID prevspost   EDV   ESV  LVEF
       <int> <chr>       <dbl> <dbl> <dbl>
 1         1 pre          76.2  32.9  56.8
 2         2 pre          65.4  35.9  45.1
 3         3 pre          64.4  35.1  45.5
 4         4 pre          50    13.9  72.1
 5         5 pre          89.6  32    64.3
 6         6 pre          62    20.6  66.7
 7         7 pre          91.2  37.7  58.6
 8         8 pre          62    24    61.3
 9         9 pre         104.   22.7  78.8
10        10 pre          90.6  31.2  65.6
11         1 post         86.3  36.6  57.6
12         2 post         60.1  26.1  56.7
13         3 post         72.5  41.1  43.3
14         4 post         46.4  18.4  60.4
15         5 post         70.9  19.3  72.8
16         6 post         55.9  17.8  68.2
17         7 post         61.9  23.8  61.6
18         8 post         69.3  34.9  49.6
19         9 post         38.6  11.5  70.1
20        10 post         48    16.1  66.4
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用pivot_longer将水平格式重塑为长格式 的相关文章

  • 有没有办法在 RStudio 中调试 RScript 调用?

    假设我从命令行运行 R 脚本 如下所示 Rscript prog R x y z 我想检查某一行的代码 目前 我无法在 RStudio 中以交互方式调试它 因为我不知道如何传递参数 由于它设计为从命令行运行 因此如何通过命令行 RStudi
  • R - 正则表达式错误(PCRE 版本)

    我正在尝试使用koRpus在 R 中在运行 RHEL6 的 Linux 服务器上进行词形还原 上周 当我安装了 MRO Microsoft R Open 3 2 3 时 下面的代码效果很好 library koRpus lw c danci
  • 可以明确声明包依赖项的版本吗?

    我倾向于对我编写的代码进行明确而不是隐含的描述 因此 在成功创建自己的包之后 我立即想到的下一件事是如何最好地确保代码的健壮性和可靠性 其中一部分与我的包所依赖的包有关 实际问题 在这方面 是否可以明确声明需要 期望哪个版本的包依赖项 我正
  • 将summary()写入as.data.frame以在ggplot / R中使用

    请查找 af 数据样本t below 我正在使用以下方法进行竞争风险分析etmCIF来自etm package 产生以下结果 这很好 但需要更好的图形 曾经有一个ggtrans etm函数将数据导入ggplot 然而 这个功能显然被删除了
  • 将 JSON URL 转换为 R 数据帧

    我在将 JSON 文件 从 API 转换为 R 中的数据帧时遇到问题 例如 URL 我尝试了 S O 的一些不同建议 包括将json数据转换为R中的数据框 https stackoverflow com questions 28683769
  • 使用 R 的 flextable 包时,有没有办法将传递给 add_header_lines() 的字符串部分加粗

    我正在使用我喜欢的 flextable 包为 Word 文档创建几个表格 但是 我在将表格标题中的部分文本加粗时遇到了一些麻烦 例如 我希望标题为 Table 1 我的表格标题的其余部分 而不是 表 1 我的表格标题的其余部分 I 找到这个
  • 如何使用 R 中带引号的字符值内的序列读取 CSV?

    这是一个包含两个字符列的 CSV 文件 key value a 所有字符值都用双引号引起来 并且有一个顺序 在值之一内 转义引号加分隔符 我无法通过 read csv readr 中的 read csv 或 data table 中的 fr
  • 如何更新条件公式?

    让我直接进入示例 考虑以下等式 frml lt formula y a b x z 使用这样的公式规范 例如和AER ivreg 我想更新这个公式 使其显示为 frml2 lt y a b c x z w 但是 我不确定如何更新条件标志之前
  • dplyr,do(),从模型中提取参数而不丢失分组变量

    R 帮助中关于 do 的示例略有不同 by cyl lt group by mtcars cyl models lt by cyl gt do mod lm mpg disp data coefficients lt models gt d
  • 如何在 R 中为传单中的数值变量设置不对称颜色渐变

    我想让传单调色板以零为中心 红白绿发散 我已经尝试过中所说的这个帖子 https stackoverflow com questions 29262824 r center color palette on 0 当我尝试手动创建颜色时 我得
  • 限制数据框中所有单元格的字符串长度?

    您好 有没有一种方法可以限制 data frame 中所有列的字符串文本大小 而不必循环遍历每一列并一次使用 str trunc 之类的东西 例如下面的数据框 我可以将所有文本大小限制为仅 5 个字符 而不必一次只执行一列吗 如果有 50
  • 如何获得属于五分位数的x?

    我正在大学学习使用 R 进行计量经济学项目 所以请原谅我的笨拙 基本上 使用并给出 一个矩阵 股票价格 行 天 列 公司股票价格 另一个矩阵 市值 行 天 列 公司市值 我必须收集第三个矩阵每天观察的属于市值分布第一五分位数的股票价格 然后
  • 错误:“rjags”的包或命名空间加载失败

    在终端的 conda 环境之一中 我能够成功安装包 rjags 但是 当我在该环境中运行 R 并运行库 rjags 时 出现以下错误 加载所需的包 coda 错误 rjags 的包或命名空间加载失败 rjags 的 loadNamespac
  • R 更改小数位且不四舍五入

    gt signif 1 89 digits 2 1 1 9 我想要1 8 这有点笨拙 但它会起作用并保持所有数字 x lt 1 829380 trunc dec lt function x n floor x 10 n 10 n Resul
  • 将数据从 R 导出到 Excel

    我试图将从 R 获得的一些结果导出到 Excel 中 但未成功 我尝试过以下代码 write table ALBERTA1 D ALBERTA1 txt sep t write csv ALBERTA1 ALBERTA1 csv your
  • R 中的字符串作为函数参数

    数据框chocolates列出了糖果的类型以及每种糖果的一组评级 ID sweetness filling crash snickers 0 67 0 55 0 40 milky way 0 81 0 53 0 56 我正在编写一个函数 它
  • 使用outer代替expand.grid

    我正在寻找尽可能快的速度并留在基地做该做的事expand grid做 我用过outer为过去类似的目的创建一个向量 像这样的东西 v lt outer letters LETTERS paste0 unlist v lower tri v
  • R:将 JSON 时间格式转换为 POSIX

    我有一个 JSON 字符串 并将其放入数据框中 我能够做到这一点 但我在使用 apply 函数之一将所有时间字符串转换为 POSIX 格式时遇到问题 See here https stackoverflow com questions 90
  • GGPLOT2:如何在 ggplot() 脚本中绘制特定选择

    这是一个名为的大型数据集的峰值P 其中有 10 个优惠 CS 有不同的商店 SHP 具有多个数值 数据集列出了按周排序的它们 WK 2 tm 52 它创建一个大文件 仅前 6 行出现峰值 WK MND CS SHP RevCY RevLY
  • 替换字符串/文本中“从第 n 次到最后一次”出现的单词

    这个问题以前曾被问过 但尚未得到令提问者满意的答案 https stackoverflow com questions 36368712 how to use stringrs replace all function to replace

随机推荐

  • Stackdriver 日志记录中不会创建任何日志

    在我的谷歌应用程序脚本中 我有 Logger log test 我什至尝试过 console log test 但即使我将项目 id 设置为 Google Cloud 项目 id 也不会打印到 stackdriver 日志中 屏幕显示 为了
  • .NET 中将 int 转换为位数组

    如何将 int 转换为位数组 如果我例如有一个值为 3 的 int 我想要一个长度为 8 的数组 如下所示 0 0 0 0 0 0 1 1 这些数字中的每一个都位于数组中大小为 8 的单独槽中 Use the BitArray class
  • MySQL 多数据库设置

    我已经寻找了这个问题的答案 我似乎能找到的只是一些问题 询问是使用多个数据库还是在单个数据库中使用多个表更好 但这不是我的问题 问题 1 我想在当前数据库旁边设置一个新数据库 但不知道如何操作 我想授予用户对 DB2 的完全管理员访问权限
  • VBA:检测用户窗体的任何文本框中的更改

    有一个用户表单有很多文本框 我需要检测每个文本框的更改 因此 我为表单中的每个文本框编写了一个子例程 结果是一大段代码 由于每个文本框的代码都是相同的 我想优化它 那么是否可以只编写一个子例程来检测表单的任何文本框中的更改 实现这一目标的唯
  • 在32位系统上安装64位glib2进行交叉编译

    我正在尝试在 32 位 ubuntu 系统上交叉编译 64 位可执行文件 这一直有效 直到链接为止 由于缺少 64 位 glib2 libglib 2 0 a 它失败了 如果我在 64 位系统上执行此操作 我会使用getlibs将 32 位
  • OpenJPA 合并/持久非常慢

    我在 WebSphere Application Server 8 上使用 OpenJPA 2 2 0 和 MySQL 5 0 DB 我有一个要合并到数据库中的对象列表 就像是 for Object ob list Long start C
  • Redis:插入元素在开头还是结尾时,ZADD 是否比 O(logN) 更好?

    雷迪斯文档对于 ZADD 来说 操作是 O logN 然而 有谁知道 ZADD 是否比 O logN 当插入的元素位于排序顺序的开头或结尾时 例如 对于某些实现 这可能是 O 1 具体来说 redistutorial指出 排序集是通过双端口
  • 如何获取 Win32 中可用串行端口的列表?

    我有一些遗留代码 通过调用提供 PC 上可用 COM 端口的列表EnumPorts 函数 然后过滤以 COM 开头的端口名称 出于测试目的 如果我可以将此代码与类似的东西一起使用 那将非常有用com0com 它提供了成对的虚拟 COM 端口
  • Typescript 模块和 systemjs。从内联脚本实例化类

    我正在使用系统模块选项将 typescript 模块转换为 javascript 我正在浏览器中执行此操作 当初始化由 typescript 生成的模块类的代码也使用 systemjs system import 加载时 我可以使用此模块
  • td 中的多行

    Stores td 包含多行表 一个商店可以有多个 商店 行 参见示例 https jsfiddle net ak3wtkak 1 商店宽度和数量 th 第二个表中的多行列应相同 如何解决这个问题或者什么是替代方法 table border
  • 处理带有 Promise 的对象数组

    我正在尝试制作一个 Node Express 应用程序 在其中从不同的 url 获取数据 调用 node fetch 来提取某些页面的正文以及有关某些 url 端点的其他信息 然后我想渲染一个 html 表格来通过信息数组显示这些数据 我在
  • LINQ 中的更新查询包含 WHERE 子句中的所有列,而不仅仅是主键列

    我正在使用 Linq 更新表中的单个列 请使用下面的虚构表格 MyTable PKID ColumnToUpdate SomeRandomColumn var row from x in DataContext MyTable where
  • Android studio 在真实设备上运行应用程序后添加了不需要的权限

    在设备上运行应用程序后 应用程序需要清单文件中未提及的不需要的位置权限 当我从我的朋友 Android studio 运行相同的代码时 它运行正常 不需要额外的许可 清单文件
  • 更简洁的最大/最小版本,没有块

    我通常这样做 abc defg max a b a length lt gt b length 但这似乎需要大量额外的输入来比较两个对象上相同方法的结果 有没有更简洁的方法来做类似的事情 abc defg max length 哪个会在每个
  • 嵌套选择器 - 可能吗?

    假设我有一个div里面有一堆东西 div ul ul div class Component div div
  • Tensorflow:我的准确性出现问题

    我只是运行一个简单的代码 并希望在训练后获得准确性 我加载了保存的模型 但是当我想要获得准确性时 却出现了问题 为什么 coding utf 8 from color 1 import read and decode get batch g
  • 从代码中将方向设置为纵向

    我知道我可以限制清单文件的方向 像这样 android screenOrientation portrait 但是可以通过代码设置方向吗 例如 可以通过清单和代码将活动设置为全屏this getWindow setFlags WindowM
  • 动态添加项目到 JComboBox

    Vector comboBoxItems new Vector DefaultComboBoxModel model ComboBox Items have gotten from Data Base initially model new
  • Java中Set和SortedSet接口之间的逻辑不一致[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心以获得指导 我注意到 Java 中的
  • 使用pivot_longer将水平格式重塑为长格式

    我正在尝试使用之前提供的相同代码将数据重塑为长格式而不是宽格式link但多次尝试修改后还是不行names pattern pre post 我的数据样本是 data1 lt read table text Serial ID pre EDV