如何在R中创建一个数据帧,其中我必须将不同的txt文件与来自单独文件的示例ID相关联?

如何在R中创建一个数据帧,其中我必须将不同的txt文件与来自单独文件的示例ID相关联?,r,R,我在R中使用了两个数据集。 首先,我有多个txt文件,其中包含不同基因的表达式值。每个文件都有相同的列名和行名 gene_ID expression_value gene_1 expression_value_1 ... ... 在第二个示例中,我有一个主图表(csv文件),它将每个txt文件的名称与患者ID相关联 name_txt_file patient_ID txt_file_1 patient_1 我正在尝试创建一个主文件,其中包含每个基因的所

我在R中使用了两个数据集。 首先,我有多个txt文件,其中包含不同基因的表达式值。每个文件都有相同的列名和行名

gene_ID   expression_value
gene_1    expression_value_1
...       ...
在第二个示例中,我有一个主图表(csv文件),它将每个txt文件的名称与患者ID相关联

name_txt_file    patient_ID
txt_file_1       patient_1
我正在尝试创建一个主文件,其中包含每个基因的所有患者的基因表达值

patient_ID      gene_1                 gene_2   ...
patient_1       expression_value_1     expression_value_2
patient_2       expression_value_x     expression_value_y

到目前为止,我已经用正确的列名和行名创建了一个空数据框,但我不知道如何将每个txt文件的名称与主图表(csv文件)中的患者ID关联,并填充此空数据框的表达式值。我假设可以使用某种for循环函数,但不知道如何编写函数,将文件中的数据与基于文件名的患者ID相关联。任何帮助都将不胜感激。

确保yout.txt文件在R中可读(我更喜欢csv)

然后我使用如下代码:

df.files <- data.frame( filename = list.files( path = "./data", pattern="*.txt" ) )
df.files["filepath"] <- paste0( getwd(), "/data/", df.files$filename )

df1 <- data.frame( gene_ID = character(0), 
                   expression_value = character(0) )

for ( f in df.files$filepath ) {
  df.temp <- read.csv2(f)
  filename <- gsub(".*/","",f)
  df.temp["filename"] <- strtrim( filename, nchar( filename ) - 4 )
  df1 <- rbind( df1, df.temp )
}

df2 <- data.frame( filename = c( "text_1", "text_2" ), 
                   patiend_ID = c( "patient_1", "patient_2" ), 
                   stringsAsFactors = FALSE )

require(tidyverse)
df.total <- df1 %>%
  left_join( df2, by = "filename" ) %>%
  spread( gene_ID, expression_value ) %>%
  select( -filename )

df.files你说你有两个数据集,但有多个txt文件,我很困惑。这些不是数据集吗?最后,每个患者是否有一行,列数是否与该患者对应文本文件中的行数相同?是的,多个txt文件都是每个患者的数据集。最后,每个患者有一行,列是测量的每个基因,输入的值是表达值。txt文件包含相同的信息列,如基因ID和基因表达值。我遇到的问题是,每个患者都有自己的txt文件,这些txt文件中的所有基因ID都是相同的,因此我必须通过单独的文件(包含患者ID和txt文件名)根据文件名将每个txt文件与患者ID相关联,然后再将所有数据组合在一起。