比较列并从中提取信息

时间:2016-03-25 17:37:56

标签: r

我使用此代码从数据集中提取了2列数据:

ID <- matrix(c(df[[2]], df[[19]]), nrow = 737, ncol = 2)

我在此处http://imgur.com/aGQ02It

上传了此表的一个小例子

第一列包含与某个位置相关的代码,该代码中最重要的部分是前4个数字,它告诉我哪个城镇,例如6011 = A镇。

第二列是一个从1到6编码的密钥,它告诉我在这个城镇中发现了哪6种。

我希望找到一种方法让R通过这些列生成一个矩阵,告诉我哪个物种发生在哪个城镇?所以我觉得桌子看起来像这样......

       |Species 1| Species 2| Species 3|   
  |Town|
  |6011|       21|         23|        15|
  |6013|       21|         23|        15|

所以我需要对矩阵进行排序,按照前4位数对城镇列进行排序,同时计算城镇中每个物种的数量。

我过去曾使用substr函数从矩阵中提取信息以供使用,但我不知道如何做一些像这样复杂的事情。

我真的很感激任何帮助! 谢谢。

1 个答案:

答案 0 :(得分:1)

你可以做:

  1. 从i创建data.frame第一列的substr结果(请参阅?substr)和ii)矩阵的第二列。
  2. 在其上使用table
  3. 您的示例不可重现,因此这里有一个矩阵m,看起来像你的:

    m <- matrix(c(
      "6011-0001", "1",
      "6011-0002", "2",
      "6011-0003", "2",
      "6012-0001", "1",
      "6012-0002", "2",
      "6012-0003", "2",
      "6012-0004", "4"), ncol=2, byrow=T)
    

    然后:

    table(data.frame(town=substr(m[, 1], 1, 4), sp=m[, 2]))
    

    使用data.frame而不是matrix可以简化后续操作。