如何基于来自另一个数据框的信息将列添加到多个数据框

时间:2019-02-11 17:33:04

标签: r dplyr

很抱歉,这个问题很简单/可以在其他地方回答-我已经看过,但是作为一个新手,我似乎找不到我需要的东西。

我有一个数据框(长度),其中包含一个唯一值,我需要将其添加到其他文件中

View(Length)
        File_name                                                 Transcript_length                                                                 <d
    1 sample15.fasta.out_alternative.out_contig.copynumber.csv          89229486
    2 sample16.fasta.out_alternative.out_contig.copynumber.csv          70908644
    3 sample2.fasta.out_alternative.out_contig.copynumber.csv           56017470
    4 sample28.fasta.out_alternative.out_contig.copynumber.csv          94888762
    5 sample30.fasta.out_alternative.out_contig.copynumber.csv         106260465
    6 sample31.fasta.out_alternative.out_contig.copynumber.csv          91189772

然后我已经导入并开始处理这些copy.number.csv文件,但是需要添加一个新列,其中包含与文件名相对应的值?

尝试1:

  #import copynumber data
import2 <- list.files(pattern="*copynumber.csv", full.names = TRUE)
list2env(
  lapply(setNames(import2, make.names(gsub("$", "", import))),
         read.csv, sep = ""),
  envir = .GlobalEnv)
CN_files <- lapply(import2, read.csv, sep = "")
names(CN_files) <- gsub("$", "", import2)

#then manipulate 
for (f in 1:length(CN_files)) {

  names(CN_files[[f]]) <- c("Family", "Element", "Length", "Fragments", "Copies", "Solo_LTR", "Total_Bp", "Cover") 

然后如何根据早期数据帧提供的特定copynumber.csv文件,将笔录长度值添加到新列中?

再次非常感谢任何帮助,我是新手,请随时就如何提出R问题等问题提供更多一般性建议

1 个答案:

答案 0 :(得分:0)

我已经弄清楚了如何在循环外执行此操作:

CN_files[[1]] <- CN_files[[1]] %>% mutate(bp = Length$Transcript_length[1])
CN_files[[2]] <- (CN_files[[2]] %>% mutate(bp = Length$Transcript_length[2]))
CN_files[[3]] <- (CN_files[[3]] %>% mutate(bp = Length$Transcript_length[3]))
CN_files[[4]] <- (CN_files[[4]] %>% mutate(bp = Length$Transcript_length[4]))  
CN_files[[5]] <- (CN_files[[5]] %>% mutate(bp = Length$Transcript_length[5]))
CN_files[[6]] <- (CN_files[[6]] %>% mutate(bp = Length$Transcript_length[6]))
CN_files[[7]] <- (CN_files[[7]] %>% mutate(bp = Length$Transcript_length[7]))  
CN_files[[8]] <- (CN_files[[8]] %>% mutate(bp = Length$Transcript_length[8]))
CN_files[[9]] <- (CN_files[[9]] %>% mutate(bp = Length$Transcript_length[9]))

尽管如此,这似乎很尴尬且效率低下,因此,如果有人对如何更好地实现这一点有任何建议,将不胜感激!

  • 注意,已知列表中文件的顺序与“长度”数据文件相同-