Подмножество строк на основе значений столбцов с неизвестными именами и количества столбцов - PullRequest
0 голосов
/ 30 сентября 2011

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

Пример:

# these are the terms I am looking in
terms <- c("beats", "revs", "revenue", "earnings")
# dict <- Dictionary(terms)
# dictStudy <- inspect(DocumentTermMatrix(mydata.corpus.tmp, list(dictionary = dict)))

dictStudy <- data.frame(beats=c(0, 0, 0, 1, 0, 2), revs=c(0, 0, 0, 1, 0, 1), revenue=c(0, 0, 0, 0, 0, 0), earnings=c(1, 0, 0, 1, 0, 1)) 
ss <- expression(terms > 0)
dictStudy.matching <- subset(dictStudy, eval(ss))

Я надеялся, что выражение и eval спасут меня, но я не могу понять это.

Как найти только строки во фрейме данных, у которых есть столбцы> 0?

1 Ответ

1 голос
/ 30 сентября 2011

Я предполагаю, что вы хотите иметь в виду строки, в которых хотя бы один элемент этой строки больше нуля (т. Е. Любой из столбцов больше нуля).

> which(apply(dictStudy,1,function(x) any(x > 0)))
[1] 1 4 6

Как указывает Томминиже это предполагает, что все ваши столбцы на самом деле являются числовыми.Вы можете обойти это, подставив фрейм данных, чтобы вытащить только те столбцы, которые являются числовыми:

> which(apply(dictStudy[,sapply(dictStudy,is.numeric)],1,function(x) any(x > 0)))
[1] 1 4 6
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...