我有一个大的R数据.框架,其中我有重复的化学名称,第二列中有不同的"结果"和"使用"值.我想合并这些,这样每个化学物质就有一行,所有"结果"和"使用"值都在各自列的单个单元格中以逗号分隔.

示例DF:

df1 <- data.frame(Name=c("reservatol","reservatol","reservatol","DPG"),
                  Result = c("naturally occurring", "antagonist", "synthetic", "rubber"),
                  Use = c("Pharma", "Pharma", "Drugs and Medication", "Tires"))
  Name              Result                     Use
1 reservatol        naturally occurring        Pharma
2 reservatol        antagonist                 Pharma
3 reservatol        synthetic                  Drugs and Medication
4 DPG               rubber                     Tires

有没有办法让它看起来像这样?

  Name           Result                                         Use
1 reservatol     naturally occurring, antagonist, synthetic     Pharma, Drugs and Medication
2 DPG            rubber                                         Tires

我try 使用group_by

推荐答案

您几乎就到了-使用summarise而不是mutate:

library(dplyr)

df1 %>%
  group_by(Name) %>%
  summarise(Result = paste(Result, collapse = ", "), Use = paste(Use, collapse = ", "))

R相关问答推荐

按自定义数字模式对变量名称排序

我不能在docker中加载sf

使用tidy—select创建一个新的带有mutate的摘要变量

lightgbm发动机在tidymmodels中的L1正则化""

R函数‘paste`正在颠倒其参数的顺序

将数字转换为分钟和秒

使用较长的查询提取具有部分匹配的列表中的较短目标,

从外部文件读取多个值作为字符向量

解析R函数中的变量时出现的问题

TreeNode打印 twig 并为其上色

安全地测试文件是否通过R打开

在数据帧列表上绘制GGPUP

在R中,如何从一系列具有索引名的变量快速创建数据帧?

如何阻止围堵地理密度图?

使用列中的值来调用函数调用中应使用的其他列

创建在文本字符串中发现两个不同关键字的实例的数据框

是否有可能从边界中找到一个点值?

有毒元素与表观遗传年龄的回归模型

从字符串01JAN2021创建日期

我有2011-2022年的年度数据.如何计算最低年份和最高年份之间的差额?