2016-06-03 2 views
-1

Я пытаюсь получить данные из столбца один, который соответствует столбцу 2, но только по значению «B». Необходимо каким-то образом сделать истинные значения списком. Нужно повторить это для 50 000 строк. Около 37 000 из них верны. Я невероятно новичок в этом, поэтому любая помощь будет приятной.R: Поиск соответствующего значения строки

Data <- data.frame(
X = sample(1:10), 
Y = sample(c("B", "W"), 10, replace = TRUE) 
) 
Count <- 1 
If(data[count,2] == "B") { 
    List <- list(data[count,1] 
    Count <- count + 1 
#I'm not sure what to use to repeat I just put 
Repeat 
} else { 
Count <- count + 1 
Repeat 
} 

Конечным результатом должен быть список() только для одной колонки. В этом случае, если строки 1-5 имели «B», я хочу, чтобы из столбца вышли цифры.

+0

Не могли бы вы добавить минимальный пример того, что вы пытаетесь сделать, в том числе и ожидаемый результат ?! – Cleb

+1

Измените свой вопрос, указав простой пример и ожидаемый результат. Тем временем очень сложно понять, что вы пытаетесь сделать. – pbahr

+0

Нам нужны ваши данные (по крайней мере, его структура) и иметь воспроизводимый код для запуска и посмотреть, где вы застряли. Пожалуйста, проверьте эту [нить] (http://stackoverflow.com/a/5963610/2864184) для руководства. – pbahr

ответ

0

Не уверен, что, если я правильно понял, что вы ищете, но из комментариев я предположил бы, что это могло бы помочь:

setNames(data.frame(Data[1][Data[2]=="B"]), "selected") 
# selected 
#1  2 
#2  5 
#3  7 
#4  6 

Нет необходимости петли.


данные

Data <- structure(list(X = c(10L, 4L, 9L, 8L, 3L, 2L, 5L, 1L, 7L, 6L), 
       Y = structure(c(2L, 2L, 2L, 2L, 2L, 1L, 1L, 2L, 1L, 1L), 
      .Label = c("B", "W"), class = "factor")), 
      .Names = c("X", "Y"), row.names = c(NA, -10L), 
       class = "data.frame") 
+1

Спасибо, что это он. – BroMan

+0

Добро пожаловать. – RHertel

+0

Для чего нужна вторая часть данных? – BroMan

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