我使用此代码从数据集中提取了2列数据:
ID <- matrix(c(df[[2]], df[[19]]), nrow = 737, ncol = 2)
上传了此表的一个小例子
第一列包含与某个位置相关的代码,该代码中最重要的部分是前4个数字,它告诉我哪个城镇,例如6011 = A镇。
第二列是一个从1到6编码的密钥,它告诉我在这个城镇中发现了哪6种。
我希望找到一种方法让R通过这些列生成一个矩阵,告诉我哪个物种发生在哪个城镇?所以我觉得桌子看起来像这样......
|Species 1| Species 2| Species 3|
|Town|
|6011| 21| 23| 15|
|6013| 21| 23| 15|
所以我需要对矩阵进行排序,按照前4位数对城镇列进行排序,同时计算城镇中每个物种的数量。
我过去曾使用substr
函数从矩阵中提取信息以供使用,但我不知道如何做一些像这样复杂的事情。
我真的很感激任何帮助! 谢谢。
答案 0 :(得分:1)
你可以做:
data.frame
第一列的substr
结果(请参阅?substr
)和ii)矩阵的第二列。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
可以简化后续操作。