R:根据匹配组合两个csv文件

时间:2012-01-06 05:21:46

标签: r merge

我有两个csv文件:

csv1 <- data.frame(y=c("classA", "classB", "classA", "classB", "classA", "classC"), 
                   DBID=c("d1", "d1", "d2", "d3", "d3", "d3")) 

       y DBID
1 classA   d1
2 classB   d1
3 classA   d2
4 classB   d3
5 classA   d3
6 classC   d3

csv2 <- data.frame(tm=c("t1","t1","t2"), 
                   y=c("classA","classC","classB"))

  tm      y
1 t1 classA
2 t1 classC
3 t2 classB

我想通过匹配两个csv文件中的列y来提取信息以获取表格,即

t1在csv2文件中有classA和classC,因此,在csv1(d1,d2和d3)中分类为classA的所有DBID都列在结果数据帧中,第一列中为t1,d1,d2和d3为第二列柱

t2在csv2文件中有B类,因此,在csv1(d1和d3)中归类为classB的所有DBID都列在结果数据框中,其中t2列在第一列中,d1和d3列为第二列。

并获取如下数据框:

tm DBID endcol
t1 d1   1
t1 d2   1
t1 d3   1
t1 d3   1
t2 d1   1
t2 d3   1

请使用R。

指示如何操作

1 个答案:

答案 0 :(得分:3)

也许merge

> merge(csv1,csv2)
       y DBID tm
1 classA   d1 t1
2 classA   d2 t1
3 classA   d3 t1
4 classB   d1 t2
5 classB   d3 t2
6 classC   d3 t1

您可以自己添加所有列的列。 merge(默认情况下)基于具有相同名称的列合并两者,这就是为什么我不必传递任何其他参数。如果您有其他匹配的列名,则需要明确指定by参数以获得所需的行为。