У меня есть dataframe, называемый return. Как сделать код ниже более кратким? Я пробовал использовать apply, lappply и sapply, но они, похоже, меняют структуру DataFrame таким образом, что я не могу создать корреляционную матрицу. Чтобы уточнить: приведенный ниже код работает, но я хотел бы сделать его более кратким. Благодаря!Как преобразовать все нечетные значения в NA в R в фрейме данных?
returns$VIT <- as.numeric(as.character(returns$VIT))
returns$EFA <- as.numeric(as.character(returns$EFA))
returns$VWO <- as.numeric(as.character(returns$VWO))
returns$VIG <- as.numeric(as.character(returns$VIG))
returns$VNQ <- as.numeric(as.character(returns$VNQ))
returns$iPath.DJP <- as.numeric(as.character(returns$iPath.DJP))
returns$iShares.MUB <- as.numeric(as.character(returns$iShares.MUB))
cor(returns, use="pairwise.complete.obs")
EDIT: Следующий тестовый код НЕ работает, я пытаюсь выяснить, как заставить его работать.
test <- data.frame(c(.04,.2,"blah"),c(.01,.24,"blah"))
colnames(test) <- c("VIT", "EFA")
new <- apply(test, 2, function(x) as.numeric(as.character(x)))
cor(test, use="pairwise.complete.obs")
Попробуйте 'apply (return, 2, function (x) as.numeric (as.character (x))'. Добро пожаловать в SO. Это общая практика, когда вы можете включить небольшой воспроизводимый пример, чтобы мы могли запустите свой код. –
Выполнение нового <- apply (возвращает, 2, function (x) as.numeric (as.character (x))) создает строки [1,] [2,] вместо 1,2. И я не могу run cor (return, use = "pairwise.complete.obs") – user2374133
Будьте конкретны. Что не работает. В чем ошибка? Плюс вы используете 'cor' on test not new. –