2015-10-11 3 views
1

У меня есть таблица данных с тусклым (133 x 24) Я хочу видеть только таблицу, для которой элементы больше заданного значения.Поиск верхних n элементов в таблице в R

 C1 .....C24 
R1 
... 
... 
... 
R133 

Предположив многие ценности являются < 4 и у меня есть 10 значений, которые больше, чем 5 я хотел бы видеть:

(R1,C11) = 9 
(R38,C5) = 11 
(R90,C20) = 20 
.... 

Для всех элементов, которые больше, чем то, что я уточнить. Они представляют собой горячие точки в моем наборе данных, которые требуют особого внимания.

Выборочные данные

R <- c(rep("R1",20),rep("R2",5),rep("R3",25),rep("R4",9)) 
C <- c(rep("C1",15),rep("C2",18),rep("C3",16),rep("C4",10)) 
dt <- table(R,C) 
     C 
R C1 C2 C3 C4 
    R1 15 5 0 0 
    R2 0 5 0 0 
    R3 0 8 16 1 
    R4 0 0 0 9 

ind <- something(dt > 5) 

R1 C1 15 
R1 C2 5 
R2 C2 5 
R3 C2 8 
R3 C3 16 
R4 C4 9 
+0

Вы должны попробовать 'ind <- yourdata > 5; yourdata [ind] ' – akrun

+0

Люди будут с большим энтузиазмом помогать, если вы совместно используете код для создания ваших данных образца (или просто делите' dput (dt) '). Особенно, когда вы говорите, что класс вашего объекта - «Таблица». Я знаком с объектами класса data.frame, 'data.table',' tbl_df', 'matrix' и' table'. Ваша не похожа на «таблицу», и я не знаю ни одного капитала T 'Table'. – Gregor

+0

Я редактировал изменения, вставляя некоторые примеры данных для создания таблицы. Они представляют собой взаимодействие между учеником и учителем определенного типа, и мы пытаемся определить, существуют ли какие-либо шаблоны смещения, основанные на количестве этих определенных типов взаимодействий. Поместив в табличный формат, я могу запустить на нем тепловую карту, чтобы идентифицировать «горячие» области, но теперь я хочу выбирать только те взаимодействия, которые связаны с определенным порогом, поэтому мы можем продолжить расследование. Спасибо. – datadan

ответ

3

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

x <- dt >= 5 
data.frame(
    row = rownames(x)[row(x)[x]], 
    col = colnames(x)[col(x)[x]], 
    val = dt[x] 
) 
# row col val 
# 1 R1 C1 15 
# 2 R1 C2 5 
# 3 R2 C2 5 
# 4 R3 C2 8 
# 5 R3 C3 16 
# 6 R4 C4 9 

Если вы хотите, чтобы получить немного фантазии вы могли Map() над dimnames().

data.frame(Map("[", dimnames(x), list(row(x)[x], col(x)[x])), val = dt[x]) 
# R C val 
# 1 R1 C1 15 
# 2 R1 C2 5 
# 3 R2 C2 5 
# 4 R3 C2 8 
# 5 R3 C3 16 
# 6 R4 C4 9 
+1

Работал именно так, как я хотел .... Большое вам спасибо! – datadan

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