2014-12-24 3 views
0

Есть несколько вопросов, касающихся этого, но моя проблема, похоже, не соответствует другим: у меня есть столбец под названием «Время», который может быть либо 0, либо 1. Основанный на этом значении я бы использовал значения в другом столбце в той же строке.Отображение конкретных столбцов в r на основе значения

Например, я хочу отобразить сводку всех слов в столбце Node, но только для тех столбцов, чье время == 1. Другими словами: если Time == 1, отобразите значение столбца Node в той же строке.

Я пробовал:

summary(d[d$Time=="1", ]$Node) 

Однако это также показывает слова, которые не принадлежат к времени == 1. Тогда эти слова имеют значение 0.

Пример:

Допустим, это d:

Time - Node 
0  Banana 
1  Apple 
1  Banana 
0  Strawberry 
1  Apple 
0  Coconut 
1  Peach 

Вывод должен быть:

Apple 2 
Banana 1 
Peach 1 

И не

Apple 2 
Banana 1 
Peach 1 
Strawberry 0 
Coconut 0 
+1

Вы могли бы также aggreagte и подмножество: 'х <- агрегатный (Time ~ Node, ДФ, FUN = сумма); x [x $ Time> 0,] ' –

+0

Или, возможно, более канонический обман [** здесь **] (http://stackoverflow.com/questions/1195826/dropping-factor-levels-in-a-subsetted-data -frame-in-r) с несколькими способами сбросить неиспользуемые уровни. – Henrik

+0

Или просто для fun 'library (data.table); setDT (d) [, sum (Time) [sum (Time)> 0], keyby = Node] ' –

ответ

0

Вы можете использовать droplevels к вещным Ове levels из factor переменной Node в то время как Подменю

summary(droplevels(d[d$Time=="1", ]$Node)) 
# Apple Banana Peach 
# 2  1  1 

Или

summary(factor(d[d$Time=='1', ]$Node)) 
Смежные вопросы