Функция na.omit не удаляет строки, содержащие NA - PullRequest
0 голосов
/ 14 марта 2020

Привет! Я смотрю на inte rnet, что не так, и функция na.omit() не удаляет строки с помощью NA. Не могли бы вы мне помочь?

library(TTR)
library(quantmod)
library(doParallel) #this library is for parallel core processing

StartDate = "2010-01-01"
EndDate = "2020-03-20"
myStock <- c("AMZN")
getSymbols(myStock, src="yahoo", from=StartDate, to=EndDate)

gdat <-coredata(AMZN$AMZN.Close) # Create a 2-d array of all the data. Or...
Data <- data.frame(date=index(AMZN), coredata(AMZN)) # Create a data frame with the data and (optionally) maintain the date as an index

Data$rsi22 <- data.frame(RSI(Cl(Data), n=22))
Data$rsi44 <- data.frame(RSI(Cl(Data), n=44))
colnames(Data)

DatanoNA <- na.omit(Data) #remove rows with NAs

Ответы [ 2 ]

1 голос
/ 14 марта 2020

Я думаю, вы ищете функцию complete.cases(). na.omit() предназначен для удаления NA значений в векторе, а не для удаления строк, содержащих NA значений, из фрейма данных.

Кроме того, конструкция вашего фрейма данных немного сложна (подробности см. Ниже) ). Попробуйте это:

Data <- data.frame(date=index(AMZN), coredata(AMZN),
                  rsi22=RSI(Cl(Data), n=22),
                  rsi44=RSI(Cl(Data), n=44))
nrow(Data)
nrow(Data[complete.cases(Data),])

Обычно каждый столбец фрейма данных является вектором. Результаты RSI() сохраняются в виде вектора. Когда вы говорите

Data$rsi22 <- data.frame(RSI(Cl(Data), n=22))

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

0 голосов
/ 14 марта 2020

Вы можете попробовать complete.cases

DatanoNA <- Data[complete.cases(Data),]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...