将数据从宽变为长:基于列名称的新变量

2024-02-20

我想将数据集从宽格式重塑为长格式。

该数据集包含 300 个变量,每个变量均按照以下原则命名:ModelID_Emotion_ModelGender。样本数据如下:

df <- structure(list(X71_Anger_Male = structure(c(3L, 1L, 2L), .Label = c("Anger", 
"Disgust", "Fear"), class = "factor"), X71_Disgus_Male = structure(c(2L, 
1L, 1L), .Label = c("Disgust", "Fear"), class = "factor")), class = "data.frame", row.names = c(NA, 
-3L))

看起来像

  X71_Anger_Male X71_Disgus_Male
1           Fear            Fear
2          Anger         Disgust
3        Disgust         Disgust

我想以一种方式转置数据,即获取列名称中的信息并将其放入新变量中。例如,应该有一个新变量ModelGender、一个新变量modelID和一个新变量emotion。所以数据集应该是这样的:

desired <- structure(list(Gender = structure(c(1L, 1L, 1L, 1L, 1L, 1L), .Label = "Male", class = "factor"), 
    ModelNumber = structure(c(1L, 1L, 1L, 1L, 1L, 1L), .Label = "X71", class = "factor"), 
    Emotion = structure(c(2L, 2L, 2L, 1L, 1L, 1L), .Label = c("Anger", 
    "Disgust"), class = "factor"), Response = structure(c(3L, 
    2L, 2L, 3L, 1L, 2L), .Label = c("Anger", "Disgust", "Fear"
    ), class = "factor")), class = "data.frame", row.names = c(NA, 
-6L))

应该看起来像

  Gender ModelNumber Emotion Response
1   Male         X71 Disgust     Fear
2   Male         X71 Disgust  Disgust
3   Male         X71 Disgust  Disgust
4   Male         X71   Anger     Fear
5   Male         X71   Anger    Anger
6   Male         X71   Anger  Disgust

当我使用重塑或聚集/传播或熔化/铸造时,它不会给出所需的结果。有谁知道如何做到这一点?

感谢您的时间!


您可以简单地转换为长并拆分您想要的列。通过 tidyverse 方法的一种方式可以是,

library(dplyr)
library(tidyr)

df %>% 
 pivot_longer(everything()) %>% 
 separate(name, into = c('ModelNumber', 'Emotion', 'Gender'), sep = '_')
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将数据从宽变为长:基于列名称的新变量 的相关文章

随机推荐

  • SQL 关键字“ISABOUT”[已弃用?] 应该替换为什么?

    在 MS SQL 全文搜索中 我在查询中使用 ISABOUT 例如 这应该返回前 10 名ProductIDs PK 与RANK领域在ProductDetails Table SELECT FROM CONTAINSTABLE Produc
  • 连接浏览器和广告商而不在多点连接中显示警报消息

    目前我正在探索多点连接框架 我的应用程序广告商和浏览器中有 2 个选项 因此 当用户在一台设备上启动浏览器 而在另一台设备上启动广告商时 他们应该能够找到彼此 当该设备出现在浏览器中并且用户点击它时 将向拥有广告设备的用户显示警报 允许他们
  • 角度测试台覆盖模块不工作

    当对测试夹具使用以下配置时 我收到关于找不到标签的抱怨 替换为MockSelectionToolComponent直接在AppModule工作正常 所以一定是别的东西 Add the imported module to the impor
  • MySQL服务器消失了

    我在 MySql 服务器上执行此查询 它给出了 MySQL 服务器已消失 错误 在下面的查询中 我的两个表都有超过 1000000 行 SELECT a tab 11 10 url as url a tab 11 10 c5 as t1 a
  • 如何比较两个雄辩的集合并从另一个集合中删除其中的内容?

    我有所有门的集合 以及当前用户有权访问的门的集合 如何比较两者并从所有门集合中删除用户已有权访问的门 doors Door orderBy name asc gt get users doors user gt doors 这是两个集合 U
  • 删除或禁用 RAP/RCP EditorPart 上显示的“X”关闭按钮

    我正在开发一个显示 ViewPart 和 EditorPart 的 RAP 应用程序 我试图找到一种方法来防止 所有 编辑器部分关闭 有没有办法删除或禁用 编辑器部分显示的 X 关闭按钮 你可以这样做 我写的大致相同 例如 http wik
  • 如何启用即席分布式查询

    当我运行查询时OPENROWSET在 SQL Server 2000 中它可以工作 但 SQL Server 2008 中的相同查询会生成以下错误 SQL Server 阻止了对组件 临时分布式查询 的语句 OpenRowset OpenD
  • 动态 Telerik RadOutlookBar 标题与 ItemTemplate 出现错误

    我正在尝试以 MVVM 方式使用 Telerik RadControls 但遇到了一些奇怪的问题 RadOutlookBar 背后的 Viewmodel 有一个 ViewModel 集合 每个 ViewModel 都有一个 Title 字符
  • 如何播放本地文件中的音频?

    我想播放下载的本地音频文件 但它不播放 class AVPlayerService static let instance AVPlayerService private var audioPlayer AVPlayer public we
  • 是否有 CGPath 的替代方案可以计算给定位置路径上的点?

    对于动画计时算法 我需要提供一条路径作为曲线 可能是两端都有控制点的贝塞尔曲线 问题是似乎不可能计算 CGPath 上的点 因为 CGPathRef 是不透明的 Apple 也没有提供计算路径上的点的机制 是否有一个库或实用程序类可以计算贝
  • 招摇错误:schemaIds 冲突:检测到类型 A 和 B 的重复 schemaIds

    使用Web API并使用swashbuckle生成swagger文档 我在两个不同的命名空间中定义了两个具有相同名称的不同类 当我在浏览器中打开 swagger 页面时 它显示 schemaId 冲突 检测到类型 A 和 B 的 schem
  • React.js:非 CSS 动画

    反应文档 http facebook github io react docs 没有任何关于处理非 CSS 过渡的动画 例如滚动位置和 SVG 属性的动画 至于 CSS 过渡 有一个附加组件 http facebook github io
  • 如果不断增加访问内存超过 malloc() 分配的大小,linux glibc 中会发生什么[关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 似乎评论 答案只是停留在 C 标准描述上 让我们更深入地讨论具体的实现 我在其他讨论中看到以下代码 struct size t x char
  • 如何设置newAPIHadoopFile的分区数量?

    老人 SparkContext hadoopFile需要一个minPartitions参数 这是分区数量的提示 def hadoopFile K V path String inputFormatClass Class lt InputFo
  • 使用按钮检查 html 复选框

    我正在努力在 Google 上的任何地方寻找解决方案 也许我搜索错误 但我想我会来询问 StackOverflow 上永远值得信赖的成员 我想使用 html 按钮来选中 html 复选框 我不想使用该复选框纯粹是出于可访问性的原因 因为我正
  • 使用 Google API“写入”Google 电子表格时出错

    使用的代码 var values value1 value2 value3 var body values values gapi client sheets spreadsheets values update spreadsheetId
  • 三列 100% 高度 css 布局

    我真的很纠结这个布局的CSS 这是我的 html 代码 div div menu div div div div sidebar div div 我想要左 中 右三列 宽度分别为父级宽度的 25 60 和 15 并且全部扩展至父级 主列 的
  • Java:打破jtable中的焦点循环

    在我的 JTable 中 我想像在 Excel 中一样编辑所有相关单元格 我实现了 ENTER 停止编辑单元格并将焦点转移到下一个单元格 但是 当我在最后一个单元格中按 ENTER 时 焦点循环使我跳到第一个单元格 但我想继续在表之外并将焦
  • Django mysql 连接过多

    我将 Django 与 mysql 一起使用 并遇到连接过多的问题 我从命令行运行 python 脚本 但与 Django 模型集成以检查数据库中的数据 该脚本每 30 秒运行一次 我使用线程来控制它 My function 是检查数据库状
  • 将数据从宽变为长:基于列名称的新变量

    我想将数据集从宽格式重塑为长格式 该数据集包含 300 个变量 每个变量均按照以下原则命名 ModelID Emotion ModelGender 样本数据如下 df lt structure list X71 Anger Male str