从不同数据中按特定名称收集信息

时间:2014-02-14 09:34:28

标签: r csv

我有一些带有数据的csv文件。我加载了它们:

tbl = list.files(pattern="*.csv")
list_of_data = lapply(tbl, read.csv)

数据如何:

首先是csv:

              Exp1  Exp2  Exp3
Morgan.1       11    23    22
Catrine.2      14    33    55
Markus.1       ger   32    12

第二个csv:

              Exp1  Exp2  Exp3
Morgan.2       17    nex   23
Catrine.1      15    23    15
Markus.7       11    ger   11

我想制作这些数据的单个csv文件。如何在不同的csv文件中找到Morgan的数据(忽略点之后的内容)并将它们放在一个文件中。

首选输出:

           Exp1  Exp2  Exp3  Exp1  Exp2  Exp3
Morgan     17    nex   23    11    23    22
Catrine    14    33    55    15    23    15

我很确定我必须制作一个循环来收集所有数据,但让我知道如何为单个名称等做。

这就是我在一张表中获得所有“名字”的列表所做的:

all_data = do.call(rbind.fill, list_of_data)
data_rd <- subset(transform(all_data, X = sub("\\..*", "", X)), 
       !duplicated(X))

1 个答案:

答案 0 :(得分:1)

我会做这样的事情:

首先,我使用`do.call(rbind,...)

创建单个data.frame
dt1 = read.table(text='             Exp1  Exp2  Exp3
Morgan.1       11    23    22
Catrine.2      14    33    55
Markus.1       ger   32    12',header=TRUE,stringsAsFactors=FALSE)


dt2 = read.table(text='Exp1  Exp2  Exp3
Morgan.2       17    nex   23
Catrine.1      15    23    15
Markus.7       11    ger   11',header=TRUE,stringsAsFactors=FALSE)

DT = do.call(rbind,list(dt1,dt2))

然后我使用row.name:

上的一些正则表达式提取“morgan”行
DT[grep('Morgan',rownames(DT)),]

         Exp1 Exp2 Exp3
Morgan.1   11   23   22
Morgan.2   17  nex   23