Преобразование текстового фрейма данных в числовой фрейм данных дает список NA

#r

#r

Вопрос:

Это мой код, я хочу преобразовать текстовый фрейм данных в числовой :

 library(reldist)

year_return[complete.cases(year_return), ]
year_returnGINI <- as.numeric(as.character(year_return[2:19]))
  

Но я получаю список NA вместо числового фрейма данных :

  [1] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
  

Что я должен делать?

Вот пример набора данных :

      Date         .SXQR       .SXTR    .SXNR      .SXMR      .SXAR       .SX3R       .SX6R    
[1,] "2000-01-03" " 364.9400" "223.93" "489.0400" "586.3800" " 306.5600" " 246.8100" "385.360"
[2,] "2000-01-04" " 345.0400" "218.90" "474.0500" "566.1500" " 301.1300" " 239.2400" "374.640"
[3,] "2000-01-05" " 338.2200" "215.88" "464.2000" "542.2900" " 298.2200" " 239.5500" "373.260"
  

Вот ссылка на полный набор данных



Обновить :

Я хочу знать, как использовать коэффициент Джини из библиотеки reldist.

Теперь мой код :

 library(reldist)

year_return <- read.csv("year_return.csv")
year_return[3:19] <- lapply(year_return[3:19], function(x) 
  as.numeric(as.character(x)))
year_return[[2]] <- as.Date(year_return[[2]])
str(year_return)

gini(year_return[3:19],w)
  

И я получаю это сообщение ошибка: Ошибка в [.data.frame (x, ox): выбраны неопределенные столбцы.

Примечание: ‘w’ — это :

  [,1]       [,2]       [,3]       [,4]       [,5]       [,6]       [,7]       [,8]       [,9]
[1,] 0.04591712 0.04078667 0.04126135 0.05131896 0.04349168 0.04834431 0.04694083 0.03904389 0.04117694
          [,10]      [,11]      [,12]      [,13]      [,14]     [,15]      [,16]      [,17]     [,18]
[1,] 0.04537461 0.04692524 0.04045692 0.04696848 0.05087293 0.1713231 0.08499888 0.04396601 0.0708321
  



Что я должен делать?

Комментарии:

1. Добро пожаловать в Stack Overflow! Предпочтительнее, если вы можете публиковать отдельные вопросы вместо объединения ваших вопросов в один. Таким образом, это помогает людям, отвечающим на ваш вопрос, а также другим пользователям, ищущим хотя бы один из ваших вопросов. Спасибо!

Ответ №1:

Это очень просто. Не применяйте as.numeric(as.character(.)) к фрейму данных, применяйте его вектор-столбец за вектором-столбцом.

 year_return <- read.csv("year_return.csv")
year_return[3:19] <- lapply(year_return[3:19], function(x) 
  as.numeric(as.character(x)))
year_return[[2]] <- as.Date(year_return[[2]])
str(year_return)
  

Кроме того, 2-й вектор — это дата.

Комментарии:

1. Большое спасибо за вашу помощь! У меня есть еще одна проблема, как вы можете видеть в моем ОБНОВЛЕНИИ к моему исходному сообщению. У вас есть какие-либо идеи, почему?

2. @Snooz3 Обновление — это другой вопрос, связанный с первым, но совсем не тот. Вы должны опубликовать его как отдельный вопрос, поскольку я считаю, что он может быть полезен другим (основная цель SO), с ссылкой на этот вопрос . И, пожалуйста, если вы это сделаете, опубликуйте выходные данные dput(w) , нам станет намного проще копировать и вставлять в сеанс R.