R 如何在一行中转换不同的级别

R 如何在一行中转换不同的级别,r,tidyverse,spread,R,Tidyverse,Spread,我有一组如下数据: BETA_LACT R I S - 23 25 91 - 30 0 109 - 0 0 136 + 73 0 0 + 14 0 59 + 0 0 49 我想将数据转换为以下格式: R_- I_- S_- R_+ I_+ S_+ 23 25 91 73 0 0 30 0 109 14 0 59 0 0 136 0 0 49 我尝试了spread(),但失败了,有

我有一组如下数据:

BETA_LACT   R   I   S
-   23  25  91
-   30  0   109
-   0   0   136
+   73  0   0
+   14  0   59
+   0   0   49
我想将数据转换为以下格式:

R_- I_- S_- R_+ I_+ S_+
23  25  91  73  0   0
30  0   109 14  0   59
0   0   136 0   0   49

我尝试了spread(),但失败了,有人能帮我吗?

我怀疑您使用
spread
collect
的问题在于,您的示例数据中没有任何内容可以建议应该折叠哪些行。作为一个人,我可以观察到您希望合并第1行和第4行、第2行和第5行等。但是,在您的数据集中没有其他列或“键”来表示这一点

一种解决方案是添加一个索引列,如我在下面的第二个示例中所示,使用
groupby
mutate
。以下
reprex
(可复制示例)显示了与您的案例类似的非工作示例和工作示例


library(tidyr)
图书馆(dplyr)

示例_数据“我尝试了spread(),但失败了,有人能帮我吗?”您能说明您尝试了什么以及错误消息是什么吗?尝试先收集字母列,然后合并,然后传播