R вопрос! Я пытаюсь пометить строки в кадре данных на основе их индексов. Например, я хочу пометить все строки с индексом = x и
У меня огромный фрейм данных с тысячами строк, поэтому я стараюсь избегать большого количества циклов ... Я создал столбец значений индекса в моем фрейме данных и хочу сравнить эти значения с вектором значений для того, чтобы стратегически пометить строки в моем фрейме данных. Это структура, которую я хочу избежать (я попробовал это, и это работает, это просто навсегда):
for (i in 1:nrow(dataframe)){
for (j in 1:length(index_values)){
if (dataframe$Index[i]>index_values[j] & dataframe$Index[i]<index_values[j+1]{
dataframe$Label[i]='blah'
}
}
}
Я пытался использовать "ifelse", но он не работает в цикле? Это то, что я пробовал, но поле «Метка» не было заполнено ничем.
for (i in 1:length(index_values)){
dataframe$Label <- ifelse((dataframe$Index>index_value[i] & dataframe$Index<index_value[i+1]),'blah',0)
}
Есть ли у кого-нибудь предложения о том, как заставить "ifelse" работать в этом контексте, или какие-либо другие более эффективные способы подойти к этому?
Спасибо !!
This is the result of dput(head(dataframe, 20))... the column I want to populate is the one called "PEPMASSLabel", you can ignore the one that says "Label2":
structure(list(Data = c("BEGIN IONS", "PEPMASS=81.52200",
"MSLEVEL=1", "CHARGE=1+", "100.1120 4121.67 ", "101.0592 3174.14 ",
" 102.1273 13152.36 ", " 103.9552 3842.30 ",
" 104.1066 4018.44 ", " 111.0437 3431.08 ",
" 113.9635 4037.19 ", " 114.0912 7486.78 ",
" 116.0708 4411.26 ", " 117.0541 3008.86 ",
" 118.0862 37381.12 ", " 118.1225 8411.46 ",
" 124.0241 12898.76 ", " 127.0385 6135.08 ",
" 128.9509 5558.22 ", " 129.0407 8047.48 "),
PEPMASSLabel = c(0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L), Index = 1:20, PEPMASSLabel2 =
c(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)), .Names =
c("Data", "PEPMASSLabel", "Index", "PEPMASSLabel2"), row.names = c(NA,
20L), class = "data.frame")
Я хочу, чтобы столбец "Метка" был заполнен различными текстовыми строками.