2016-03-25 3 views
1

У меня есть 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

Вы можете сделать:

  1. создания data.frame от I) substr результат (см ?substr) в первом столбце и б) второй столбец вашей матрицы.
  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 облегчило бы последующие операции.

+1

Большое спасибо, что сработало отлично. –

+0

Не забудьте + проголосовать/принять ответ, чтобы ваш вопрос выглядел как разрешенный ;-) –

+1

Упс, сделали! –

Смежные вопросы