У меня есть data.frame
, где я хочу удалить строки, которые имеют последовательные дни. Например, у меня есть следующее data.frame
(head), его имя - sell_tv
, и я хочу удалить строки с последовательными датами. В этом конкретном случае я хочу удалить строку 5, поскольку строки 5 & 6 имеют последовательные даты.Удалить строки, содержащие последовательные даты
Date Open High Low Close Sell.TV Buy.TV
1 2015-04-08 2207 2204 2165 2166 4.038113 3.083603
2 2015-03-16 2214 2215 2172 2198 4.041986 3.087017
3 2015-03-05 2343 2364 2320 2324 4.023689 3.081034
4 2015-01-27 2171 2182 2151 2178 4.021998 3.070200
5 2015-01-23 2234 2244 2222 2230 4.032086 3.061206
6 2015-01-22 2278 2282 2242 2246 4.037248 3.095450
Я написал следующий код для этого, но получаю:
****"Error in if (sell_tv$Date[i] == sell_tv$Date[i + 1] + 1) { : missing value where TRUE/FALSE needed"****
Код:
for(i in 1:nrow(sell_tv))
{
if (sell_tv$Date[i] == sell_tv$Date[i+1] + 1)
{
new_sell<- sell_tv[-i,]
}
else
{
new_sell<- sell_tv[,]
}
i= i+1
}
Благодарен за любую помощь!
Я вижу несколько проблем в вашем коде. во-первых, вам не нужно увеличивать 'i', потому что' R' сделает это за вас (потому что это так, как хорошо 'R' ;-)). Тогда 'i + 1', когда i является' nrow (sell_tv) ', не будет соответствовать существующей строке. Одним из способов, лежащим в основе вашего кода, может быть создание переменной, в которой вы можете поместить числа строк, которые должны быть удалены, и затем вы можете удалить их сразу – Cath
Нет необходимости в цикле. Это однострочный с логическим индексированием с оператором diff: 'sell_tv [c (9999, diff (sell_tv $ Date))! = -1,]' – smci