【问题标题】:Comparing columns and extracting information from them比较列并从中提取信息
【发布时间】:2016-03-25 17:37:56
【问题描述】:

我使用以下代码从数据集中提取了 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 函数从矩阵中提取信息以供使用,但我不确定如何做如此复杂的事情。

非常感谢任何帮助! 谢谢你。

【问题讨论】:

    标签: r


    【解决方案1】:

    你可以这样做:

    1. 从 i) 矩阵的第一列上的 substr 结果(参见 ?substr)和 ii) 矩阵的第二列创建 data.frame
    2. 在上面使用table

    您的示例不可重现,所以这里有一个矩阵,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 会简化后续操作。

    【讨论】:

    • 不要忘记+投票/接受答案,这样您的问题就会显示为已解决;-)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多