使用现有列名称和值创建新列[重复]

2023-12-05

我正在尝试使用数据集中现有的列名称创建一个新列。具体来说,在这个数据集中,一行对应一个呼吸道样本,有~10个病毒检测结果,每个结果都有一个对应的列;值 0 表示该病毒检测呈阴性,值 1 表示该病毒检测呈阳性。数据集的简化版本如下所示:

Specimen ID FLUA FLUB RSV HMPV
1 1 0 1 0
2 0 1 1 0
3 0 1 1 1

我想创建一个名为“virus_combinations”的新列,列出该样本检测呈阳性的病毒。我希望按字母顺序列出病毒组合,以便 R 将相同的病毒组合识别为相同的值(例如,FLUA + RSV 与 RSV + FLUA 的组合相同,因此我希望将它们列在相同的顺序)。

Specimen ID FLUA FLUB RSV HMPV virus_combinations
1 1 0 1 0 FLUA, RSV
2 0 1 1 0 FLUB, RSV
3 0 1 1 1 FLUB, HMPV, RSV

正如我提到的,我感兴趣的病毒大约有 10 种,样本检测呈阳性的病毒数量范围为 1-5 种。因此,手动添加所有可能的病毒组合以及相关的测试结果是很困难的。

我在Stack Exchange上看到了相关的帖子,其中解决方案涉及到以下代码:

df1 <- df %>%
  group_by(ID) %>%
  summarise(output = paste(name[value == 1], collapse = ','))

我尝试通过删除 group_by() 和 summarise() 命令来调整此代码,并将其与 mutate() 一起使用,但我不确定这是否是我实际上可以做的事情。我也不明白如何指定我想要从哪些列中提取新的“virus_combinations”变量。

df1 <- df %>%
  mutate(virus_combinations = paste(names[value == 1], collapse = ','))

您能想到的任何相关命令或软件包将不胜感激。先感谢您!


在基数 R 中:

 cbind(df1, v = apply(df[-1], 1, \(x)toString(names(df1)[-1][x==1])))
  Specimen.ID FLUA FLUB RSV HMPV               v
1           1    1    0   1    0       FLUA, RSV
2           2    0    1   1    0       FLUB, RSV
3           3    0    1   1    1 FLUB, RSV, HMPV

aggregate(cbind(virus_combination = as.character(ind)) ~ Specimen.ID, 
   cbind(df1['Specimen.ID'], stack(df1, -Specimen.ID)),
   toString, subset = values > 0 ) |>
   merge(df1, y = _)

 Specimen.ID FLUA FLUB RSV HMPV virus_combination
1           1    1    0   1    0         FLUA, RSV
2           2    0    1   1    0         FLUB, RSV
3           3    0    1   1    1   FLUB, RSV, HMPV

a <- as.matrix(df[-1])
cbind(df, v = tapply(names(df)[(a * col(a)) + 1], a*row(a), toString)[-1])

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

使用现有列名称和值创建新列[重复] 的相关文章

随机推荐

  • 仅当字符串中连续时如何删除重复项? [复制]

    这个问题在这里已经有答案了 对于一个字符串 例如 12233322155552 通过删除重复项 我可以得到 1235 但我想保留的是 1232152 仅删除连续的重复项 import re Only repeated numbers ans
  • Redux-form 6.0.0 Field 组件外访问错误

    在 Redux form v5 中 我能够从装饰表单中的任何位置访问 内联 错误 异步验证 如下所示 const fields email inside the decorated form const email this props f
  • AIR 3.5 移动项目设备 ID

    我想知道是否有人知道针对移动设备 iOS 和 Android 将数据存储在全局数据库中的最佳方法 我正在构建一个根据查询写入 检索信息的应用程序 但我需要知道返回的任何记录是否是从该设备发送的 基本上 这个想法是 如果用户提交一些信息 存储
  • 如何向用户显示时间量?

    我想将时间量从毫秒转换为人类可读的字符串 例如 3 600 000应显示为1 00 00 1小时 Java 中是否有现有的库或类可以做到这一点 从 1 5 开始有 java util concurrent TimeUnit 类 像这样使用它
  • Symfony2 Twig 获取子实体的总计数

    存在以下实体 农场 谷仓和动物 一个农场可以有很多谷仓 一个谷仓可以有很多动物 在 TWIG 模板中显示农场时 还应显示动物的数量 做这个的最好方式是什么 我创建了一个 TWIG 扩展 它允许我轻松显示谷仓的数量 public functi
  • urllib、urllib2、urllib3 和 requests 模块之间有什么区别?

    在Python中 它们之间有什么区别urllib urllib2 urllib3 and requests模块 为什么是三个 他们似乎做着同样的事情 我知道已经说过了 但我强烈推荐requestsPython 包 如果您使用过 Python
  • 如何在 Android 中点击图标打开侧边栏?

    我已经实施了Hamburger酒吧与App toolbar他们都工作得很好 以下是快照toolbar and hamburgerbar Hamburger bar 我可以通过滑动打开此栏 但我也想通过单击可绘制图标 右上角图标 将其打开 我
  • 在 Qt 中从字符串中提取参数,包括带引号的区域

    我有一个 Qt5 C 程序 它接收一个包含程序名称和可能的参数的 QString 我需要将这个 QString 分成多个字符串 例如 字符串 tmp myprog param1 param2 2 param3 1 2 3 p 4 应该分为
  • 如何在文件名中使用索引

    这可能是一个微不足道的问题 我不是一个专业的程序员 我而是一个正在使用 C 做一些数值实验的数学家 我想要我的输出 针对不同的参数值将实验写入不同的文件中 MWE 应该做这样的事情 创建一个由 i 索引的文件指针 打开名为 file i 的
  • 如何在oracle中提取或更新xml属性值

    表名称 conn details 我有这个 xml 它存储在 Oracle 的 CLOB 列 conn param 中
  • 从 Windows 服务调用时 System.Diagnostics.Process.Start() 无法启动进程

    我正在尝试从 NET Windows 服务启动外部进程 过去我用过Process Start 采用可执行路径和命令行字符串的重载 这有效 但现在我想启动该过程并让它在特定用户的上下文中运行 所以我称这个版本为Start public sta
  • 更改数据框中的一些数值

    我有一个数据框 其中两个变量 纬度和经度 的值不正确 数据框中的错误值列为 999 00 正确值应分别为 42 68 和 72 47 我想要一种简单的方法来使用 dplyr 替换这些值 但我的尝试 见下文 没有成功 下面提供的错误 df L
  • 使用 MIP SDK 解密加密的 Office 365 电子邮件

    我正在关注论坛主题 Azure 信息保护 如何解密来自 EWS API 的 EML 我有兴趣了解解密加密 Office 365 电子邮件的步骤 您能否评论以下内容 正如您提到的 必须将电子邮件转换为 msg 文件 所以我的问题是 在将电子邮
  • If-Else-If 链和多个 If 哪个更好

    假设我有一个随机数 哪个更有效率 if num 1 else if num 2 else if num 3 else if num 4 else if num 5 else or if num 1 if num 2 if num 3 if
  • 如何删除字符串句子中的空格

    我正在尝试编写一段代码来删除所有前导 尾随和中间的句子空格 但只保留单词之间的一个空格 例如 如果输入是 This is my string 输出应该是 This is my string 到目前为止我已经想出了这个 include
  • python sys.getsizeof方法在不同版本的python上返回不同的大小

    sys getsizeof在不同版本的 python 上返回不同大小的 unicode 字符串 sys getsizeof u Hello World return 96 on Python 2 7 3并返回72 on Python 2 7
  • Laravel Eloquent 模型缓存

    我正在学习 laravel 雄辩拉拉维尔 5 6 我已经使用过数据库查询生成器和缓存 数据库查询生成器的检索和存储 value Cache remember users minutes function return DB table us
  • 将 Windows 窗体 ToolStripMenuItem ShortcutKeys 属性设置为小键盘键不起作用

    We have the ability to define shortcut keys for Windows Forms application menu items That way I can tell a menu item Fil
  • 当sproc使用RETURN @value时可以使用cmd.ExecuteScalar吗

    你能用吗 int blah Convert ToInt32 cmd ExecuteScalar 当存储过程的最后一条语句执行时 RETURN value 我只能让它工作 如果它 选择 值 另外 这给了我一个对象空异常 int blah in
  • 使用现有列名称和值创建新列[重复]

    这个问题在这里已经有答案了 我正在尝试使用数据集中现有的列名称创建一个新列 具体来说 在这个数据集中 一行对应一个呼吸道样本 有 10个病毒检测结果 每个结果都有一个对应的列 值 0 表示该病毒检测呈阴性 值 1 表示该病毒检测呈阳性 数据