2015-02-13 5 views
-1

Я пытаюсь извлечь подмножество значений из фрейма данных, чтобы получить среднее значение подмножества, но я не могу понять, как это сделать.Подмножество значений из матрицы в R

Я попробовал этот

kg_name=cat(shQuote(k_categories[1,]), "\n") 
m[1] = mean(subset(dt, dt[2]==kg_name)[,1]) 

Так категории ценностей, которые я должен извлечь в этом k_categories вектор. Это, например, один, два и три. В первой строке кода я добавляю кавычки к значениям, чтобы получить «один», «два», «три». Теперь вторая строка пытается вычислить среднее значение, извлекая значения двухкабельного кадра данных dt, который соответствует строке «один» во втором столбце.

Теперь все работает отлично, если я делаю это

m[1] = mean(subset(dt, dt[2]=="one")[,1]) 

Но если я извлекаю имя категории из k_categories я получаю эту ошибку (я поставил часть следа)

Error in matrix(unlist(value, recursive = FALSE, use.names = FALSE), nrow = nr, : 
length of 'dimnames' [2] not equal to array extent 
8 matrix(unlist(value, recursive = FALSE, use.names = FALSE), nrow = nr, 
dimnames = list(rn, cn)) 
7 Ops.data.frame(dt[2], kg_name) 
6 eval(expr, envir, enclos) 
5 eval(e, x, parent.frame()) 
4 subset.data.frame(dt, dt[2] == kg_name) 
3 subset(dt, dt[2] == kg_name) 

Edit (добавить дт пример кадра данных)

  Values  Categories 
       1   one 
       3   two 
       2   three 
       4   one 
       3   two 
       2   two 
+0

Можете ли вы привести пример типа матрицы, которую вы имеете, и подмножества, для которых вы хотите вычислить сводную статистику? – Jthorpe

+0

Готово. Я сделал отпечаток головки матрицы – Atirag

ответ

0

Этот скрипт дает мне среднее значение.

a = c("one", "two", "three", "one", "two", "two") 
b = c(1, 3, 2, 4, 3, 2) 
d = data.frame(values = b, categories = a) 

uniques = unique(a) 

for(i in 1:length(uniques)) 
    print(mean(subset(d, categories==uniques[i])$values)) 

Вместо того, чтобы печатать значение, вы можете сохранить его в переменной. Думаю, я не совсем понимаю, что вы пытаетесь сделать ...

+0

Более или менее, но проблема в том, что я не могу использовать категории == «один», так как я обычно не знаю названия категорий, поэтому вместо «одного» мне нужно использовать значение вектора с именами категорий, но, по-видимому, R не нравится. Это моя проблема. – Atirag

+0

Эта вторая версия работает на вас? Я сделал это точно, и это не сработало. – Atirag

+0

Да, он работает без проблем для меня. Я использую R версию 3.1.1 (2014-07-10) – shutch

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