tidyr::pivot_longer 到多列

2023-12-14

我需要将数据帧转换为更长的形式。例如,我的数据框将是这样的

df <- data.frame(
  group = c("group1","group2"),
  x1 = c(3,4),
  x2 = c(5,6),
  y1 = c(7,8),
  y2 = c(9,10)
)

我需要将其转换为

df2 <- data.frame(
  group = c("group1","group1","group2","group2"),
  num = c(1,2,1,2),
  x = c(3,5,4,6),
  y = c(7,9,8,10)
) 

我想使用 tidyr::pivot_longer 但无法在这里找出 names_pattern 。我走在正确的轨道上吗?

df_2<-df%>%tidyr::pivot_longer(c("x1","x2","y1","y2"),
                               names_to = c("x","y"),
                               names_pattern = "")

有什么帮助吗?谢谢。


您可以传递正则表达式names_pattern -

tidyr::pivot_longer(df,cols = -group, 
                    names_to = c('.value', 'num'), 
                    names_pattern = '([a-zA-Z]+)(\\d+)')

#  group  num       x     y
#  <chr>  <chr> <dbl> <dbl>
#1 group1 1         3     7
#2 group1 2         5     9
#3 group2 1         4     8
#4 group2 2         6    10

.value有着特殊的意义pivot_longer这表明原始数据帧中的列名称的一部分将是输出数据帧的列名称。该部分由使用决定names_pattern参数以捕获组的形式提供正则表达式模式。

第一个捕获组([a-zA-Z]+)捕获列名称中的所有字母,即x from x1, x from x2, y from y1等等。正如我用过的+在正则表达式中,如果您的列名称超过 1 个字符(例如 -col1, col2ETC。)。第二个捕获组用于捕获列名称中的数字,即1 from x1, 2 from x2等等。

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

tidyr::pivot_longer 到多列 的相关文章

随机推荐

  • Robotium:请安装兼容的 Android API 级别(15 或更高)

    尝试运行新的 Robotium 测试时出现此错误 有谁知道如何修理它 我拥有所需的所有 API 15 以及许多更高的 API 我缺少什么 这是我的 gradle 文件的一部分 android compileSdkVersion 25 bui
  • 将查询合并为一个

    我有以下疑问 Query 1 SELECT so ClientID All Channels as CustomerGroup so StatementID so Brand so Product Sum so Amount Amount
  • WaitHandle.WaitAny 匹配 WaitForMultipleObjects 功能

    我正在移植C API代码到 NET并研究函数调用WaitHandle WaitAny作为替代品WaitForMultipleObjects但是当调试时 NET4我可以看到这个函数被挂接到 private static extern int
  • 仅需要实体 ID 时如何避免初始化 Hibernate 代理

    For a ManyToOneJPA 实体中的关系 我只对实际的 id 引用感兴趣 而不是获取与该关系关联的整个模型 以这些 Kotlin JPA 实体为例 Entity class Continent Id var id String v
  • React 动态设置状态属性及其值[重复]

    这个问题在这里已经有答案了 我有以下组件 import React Component from react import Action from action jsx import SingleGridEl from singleGrid
  • RecyclerView 在使用 FirebaseRecyclerAdapter 首次启动时不会加载数据

    我在用着FirebaseRecyclerAdapter填充一个RecyclerView in a Fragment 这是我的代码 mDatabase FirebaseDatabase getInstance getReference myA
  • iText 在 sandbox.stamper.SuperImpose.java 中设置创建日期和修改日期

    我正在尝试在中设置创建日期和修改日期将一个 PDF 的内容叠加到另一个 PDF 中例如 sandbox stamper SuperImpose java 原则 我认为 很明确 use getInfo 然后做 info put PdfName
  • Facebook Like 按钮有时出现有时不出现

    我的网站上的类似按钮有奇怪的问题 当我进入页面时它会正确显示 刷新后它不会出现并且我有 javascript 错误 FB provide is not a function Break on this error FB provide Ar
  • 并排对齐多个表格

    以下代码生成 2 个相互叠加的表 我将如何设置它以使它们并排对齐 例如连续3个 title sample output pdf document r global options R options knitr opts chunk set
  • 将 varchar 数据类型转换为 datetime 数据类型导致值超出范围

    我有以下从 C Windows 服务运行的内联 SQL UPDATE table name SET status cd 2 sdate CAST 03 28 2011 18 03 40 AS DATETIME bat id 33acff9b
  • JPA实体:从Oracle DATE列获取小时、分钟和秒

    我无法从 Oracle 数据库获取完整的日期信息 dd mm yyyy hh mm ss 在数据库级别 在我想要接收的列中设置测试值 update my table set my date column to date 2011 06 15
  • 异步套接字

    如何与多个客户端连接 与多个客户端连接后 我如何从每个客户端接收单独的数据 据我所知 我需要使用名为 Asyncore 的东西 我该如何实施 客户类别 import socket class Client def init self sel
  • Python / Kivy 应用程序仅运行一次

    我正在使用 Anaconda 平台的 Spyder IDE 运行一个非常简单的 python 3 5 脚本 from kivy app import App from kivy uix label import Label from kiv
  • 如何在 Idris 中表达范围有效性?

    我正在尝试在 Idris 中构建一个简单的调查表单 目前正在努力验证用户输入 该输入以字符串形式出现 所提出问题的类型 目前我有以下几种类型 data Question Type where QCM numOptions Nat gt qu
  • HSM解密+加密链接

    我的应用程序充当交换机 在两方之间传输非常敏感的消息 我试图弄清楚如何在不 查看 他们试图发送的消息的情况下做到这一点 我有一个 HSM 并且我已经为发送者生成了一个密钥对 他们将使用我提供给他们的公钥来加密消息 而我可以使用 HSM 中的
  • 目标C中的^是什么意思? [复制]

    这个问题在这里已经有答案了 Objective C 中的 字符是什么意思 就像下面的代码一样 TWTweetComposeViewControllerCompletionHandler completionHandler TWTweetCo
  • 将制表符分隔的 .txt 解析为 Pandas DataFrame

    我有一个制表符分隔的 txt 文件 我正在尝试将其导入到与文本文件格式相同的 Python 数据框中 如下所示 ham TAB一直走到裕廊点 太疯狂了 只在布吉斯大世界有自助餐 电影那里有更多的东西 spam TAB免费参加 2 场每周比赛
  • 自定义金额计算

    我有下表 Date Value promo item 01 01 2011 626 0 1230 01 02 2011 231 1 1230 01 03 2011 572 1 1230 01 04 2011 775 1 1230 01 05
  • 我可以从 JavaScript 访问无效/自定义 CSS 属性的值吗?

    假设我有以下 CSS div my foo 42 我以后可以在 JavaScript 中以某种方式知道 my fooCSS 属性是针对给定的div 我不认为你可以访问无效的属性名称 至少它在 Chrome 或 Firefox 中对我来说不起
  • tidyr::pivot_longer 到多列

    我需要将数据帧转换为更长的形式 例如 我的数据框将是这样的 df lt data frame group c group1 group2 x1 c 3 4 x2 c 5 6 y1 c 7 8 y2 c 9 10 我需要将其转换为 df2 l