将没有“timevar”的数据帧从长格式转置/重塑为宽格式

2023-12-02

我有一个遵循以下长模式的数据框:

   Name          MedName
  Name1    atenolol 25mg
  Name1     aspirin 81mg
  Name1 sildenafil 100mg
  Name2    atenolol 50mg
  Name2   enalapril 20mg

并希望得到下面的内容(我不在乎是否可以以这种方式命名列,只想要这种格式的数据):

   Name   medication1    medication2      medication3
  Name1 atenolol 25mg   aspirin 81mg sildenafil 100mg
  Name2 atenolol 50mg enalapril 20mg             NA

通过这个网站,我已经熟悉了 reshape/reshape2 包,并且已经进行了多次尝试来尝试让它工作,但到目前为止都失败了。

当我尝试时dcast(dataframe, Name ~ MedName, value.var='MedName')我只是得到一堆作为药物名称标志的列(转置的值为 1 或 0)示例:

 Name  atenolol 25mg  aspirin 81mg
Name1              1             1
Name2              0             0 

我也尝试过一个dcast(dataset, Name ~ variable)在我融化数据集之后,但这只是输出以下内容(仅计算每个人拥有多少药物):

 Name  MedName
Name1        3
name2        2

最后,我尝试融化数据,然后使用重塑idvar="Name" timevar="variable"(其中全部都是 Medname),但是这似乎不是为我的问题构建的,因为如果 idvar 有多个匹配项,则重塑只采用第一个 MedName 并忽略其余部分。

有谁知道如何使用 reshape 或其他 R 函数来做到这一点?我意识到可能有一种方法可以以更混乱的方式执行此操作,使用一些 for 循环和条件来基本上拆分和重新粘贴数据,但我希望有一个更简单的解决方案。太感谢了!


随着数据表包,这可以很容易地用新的解决rowid功能:

library(data.table)
dcast(setDT(d1), 
      Name ~ rowid(Name, prefix = "medication"), 
      value.var = "MedName")

这使:

   Name    medication1     medication2       medication3
1 Name1  atenolol 25mg    aspirin 81mg  sildenafil 100mg
2 Name2  atenolol 50mg  enalapril 20mg              <NA>

另一种方法(1.9.7版本之前常用):

dcast(setDT(d1)[, rn := 1:.N, by = Name], 
      Name ~ paste0("medication",rn), 
      value.var = "MedName")

给出相同的结果。


类似的方法,但现在使用dplyr and tidyr套餐:

library(dplyr)
library(tidyr)
d1 %>%
  group_by(Name) %>%
  mutate(rn = paste0("medication",row_number())) %>%
  spread(rn, MedName)

这使:

Source: local data frame [2 x 4]
Groups: Name [2]

    Name   medication1    medication2      medication3
  (fctr)         (chr)          (chr)            (chr)
1  Name1 atenolol 25mg   aspirin 81mg sildenafil 100mg
2  Name2 atenolol 50mg enalapril 20mg               NA
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将没有“timevar”的数据帧从长格式转置/重塑为宽格式 的相关文章

  • 在并行包中的 R 的 par*apply 函数内部使用 Rcpp 函数

    我试图了解背后发生的事情Rcpp sourceCpp 调用并行环境 最近 问题中部分解决了这个问题 在 Windows 上使用 parLapply 中的 Rcpp 函数 https stackoverflow com questions 2
  • 将 R 中的列中的单引号替换为双引号

    我在 R 中的数据框有一个 A 列 其中有带单引号的字符串数据 Column A Hello World Hi World Good morning world 我想做的是将单引号替换为双引号并实现如下所示的输出 Column A Hell
  • 分析和衡量 R 代码中的技术质量:有类似于 SonarQube 的工具吗?

    一个简单的问题 有人知道是否存在类似于 sonarqube 的 R 代码工具吗 或者声纳库 我的意思是 一个用于分析代码技术质量的工具 而不仅仅是突出显示或语法格式 提前致谢 您可以使用lintr并将结果上传到声纳Qube 这里有一个例子
  • R闪亮:在渲染表格时显示“正在加载...”消息

    在 Rstudio Shiny 中 我得到了一些renderDataTable通过 RMySQL 从数据库获取信息的调用 有些查询可能需要几秒钟才能完成 我想添加一条 正在加载 消息 其中表格将在等待时最终呈现 这个问题与这个问题类似 R闪
  • 如何在时间序列的中途更改ggplot2中的线属性?

    取以下两个时间序列的简单图 economics ggplot2 dataset require dplyr require ggplot2 require lubridate require tidyr economics gt gathe
  • 查询文本指定 use_legacy_sql:false,而 API 选项指定:true

    我将 standardSQL 与 bigrquery 一起使用 library bigrquery project lt sql lt standardSQL SELECT result lt query exec sql project
  • 如何与 R 包 sf 进行“完整”联合

    我尝试使用三个多边形之间的并集sf st union 下图中显示了 ArcGIS Overlay Union All 的结果 我希望通过使用 R 中的 sf 包获得与 OUTPUT 中五个不同多边形类似的结果 library sf a1 l
  • ValueError:在 R 中使用 keras 模型时在用户代码中

    我正在尝试使用 R 在 R 中运行一维 CNNkeras包裹 我正在使用以下代码 library MASS library keras Create some data data Boston data lt Boston create a
  • 使用变量标签作为标题和轴标题时自动化 ggplots

    我对 NSE 和绘图函数有点混淆 我试图在使用变量标签 而不是名称 标记轴等的同时自动绘制一些图 假设我们有一个大型数据集 所有变量都已标记 这里的小例子 library tidyverse library sjlabelled libra
  • 导入 mgcv 失败,因为找不到 Rlapack.dll

    我想通过使用链接到 IronPython 中的 R 统计包R NET http rdotnet codeplex com 图书馆 它一直工作得很好 但现在我需要使用 R 的mgcv http cran r project org web p
  • r dplyr - 读取文件列表并使用文件名作为变量

    我想用每个文件的名称替换 image annotate 下面的 文本 library dplyr library purrr library magick list files path pattern png full names T g
  • 当我创建新变量时出了什么问题?

    我想根据原始变量施加的条件创建一个新变量 比方说 原始变量 var 是由 1 20 中的随机样本组成的向量 并且 当原来的 var 大于10时 新变量 newvar 被设置为缺失 当 var 小于10时 新变量 newvar 被设置为等于
  • 如何向 ggplot 标题和标题添加图标?

    现在我正在尝试将图标放入 ggplot 可视化中 为此 我在网上检查了一些教程 当我运行 Claus Wilke 的以下代码示例时 library ggtext library ggplot2 ggplot mtcars aes mpg d
  • 条件 RenderUI R 闪亮

    我的 renderUI 有问题 但在任何地方都找不到解决方案 可能我向谷歌问了错误的问题 不仅仅是一个闪亮的问题 而是一个基本的 R 问题 我在 R 中有一个函数 根据输入将返回一个表格或文本 所以我在我的 server R 中以这种方式创
  • R:重新列出平面列表

    这个问题 https stackoverflow com questions 8139677有一个很好的解决方案 可以在保留列表数据类型的同时展平列表 其中unlist才不是 flatten function x unlist vector
  • 查找表中第三个四分位数以上的频率

    我有一个大数据框架 对 57 个变量的超过 239k 观察值 其中包含一些疾病描述以及针对不同年龄段的人针对这些疾病使用的药物 我想在每种疾病描述的使用频率前四分之一中找到这些药物 为了制作一个可重现的示例 我创建了一个包含 1000 个观
  • 在 R/exams exams2nops() 中用零填充初始学生 ID

    当使用exams为 NOPS 考试生成 PDF 文件的软件包我想编辑学生可用的位数 reglength 我知道该软件包只允许至少 7 位数字 然而 我们学生的身份证号码只有5位数字 因此我想知道是否可以通过 PDF 操作来编辑模板 我尝试过
  • 如何使用键盘命令中断 R 中正在运行的代码?

    如何中断 R 中正在运行的脚本 假设我遇到无限循环或其他问题 并且我想停止脚本运行 有键盘命令可以做到这一点吗 如果有帮助的话 在 Python 中是 Ctrl c 我在R中尝试过 但没有成功 自我回答 几乎是其他人的评论和答案的总结 In
  • 在 R 中绘制决策树(插入符)

    我已经训练了一个数据集rf方法 例如 ctrl lt trainControl method LGOCV repeats 3 savePred TRUE verboseIter TRUE preProcOptions list thresh
  • 如何在 R 中使用别名运行系统可执行文件?

    假设我正在 R 中运行系统命令来运行executable inputfile lt path myfile txt 我该如何更换 path myfile txt在下面的命令中inputfile如下面命令所示 system executabl

随机推荐