【问题标题】:R: combine two csv files based on matchingR:根据匹配组合两个csv文件
【发布时间】:2012-01-06 05:21:45
【问题描述】:

我有两个 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 中归类为 classA 的 DBID(d1、d2 和 d3)都列在结果数据框中,第一列是 t1,第二列是 d1、d2 和 d3专栏

t2 在 csv2 文件中具有 B 类,因此,所有在 csv1 中分类为 B 类的 DBID(d1 和 d3)都列在结果数据框中,其中 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。

【问题讨论】:

    标签: r merge


    【解决方案1】:

    也许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 参数以获得所需的行为。

    【讨论】:

      猜你喜欢
      • 2016-10-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-28
      • 1970-01-01
      • 2013-10-31
      • 2012-03-28
      • 2015-01-30
      相关资源
      最近更新 更多