使用R将两行合并为一个标头

时间:2018-12-10 14:35:55

标签: r merge header title tidyverse

我已经进行了一项实验分析,现在我有一个庞大的列表,不幸的是,它以以下方式具有两个标题:

Image       Nuclei                  Cell
Metadata_s  Children_Cells_Count    Intensity_IntegratedIntensityEdge_ERKStain
C4          1                       39.03921669
...         ...                     ...

由于此文档中有65行(7x图像,35x Nuclei和23x细胞),我想使用R来自动合并这两列,因为我需要在同一列中将它们合并,如下所示:< / p>

Image_Metadata_s    Nuclei_Children_Cells_Count     Cell_Intensity_IntegratedIntensityEdge_ERKStain
C4                  1                               39.03921669
...                 ...                             ...

您知道吗,我该如何解决这个问题?我想有一个使用tidyverse librar的解决方案,但是到目前为止,我还没有找到任何解决该问题的方法,如果你们中有人可以帮助我,我将非常有帮助。

非常感谢您!

2 个答案:

答案 0 :(得分:1)

我想您需要paste标题的第一行,然后删除该行

names(df) <- paste(names(df), df[1, ], sep = "_")
df[-1,]

确保将列读为字符而不是要素。您可以通过执行以下操作将它们更改为字符

df[] <- lapply(df, as.character)

答案 1 :(得分:1)

library(data.table)
df <- as.data.table(read.table(text = "Image       Nuclei                  Cell
                 Metadata_s  Children_Cells_Count    Intensity_IntegratedIntensityEdge_ERKStain
                 C4          1                       39.03921669",header = T))

for(col in names(df))
{setnames(df,col,paste0(col,"_",df[1,get(col)]))}
df <- df[-1]

  Image_Metadata_s Nuclei_Children_Cells_Count Cell_Intensity_IntegratedIntensityEdge_ERKStain
1:               C4                           1                                     39.03921669