Превратить столбцы в числовые, учитывая список столбцов - PullRequest
0 голосов
/ 04 ноября 2018

У меня есть список столбцов, давайте назовем их: ASSET, LIAB.

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

for (v in numeric_vars) {
    ris_df[, eval(v)] <- as.numeric(gsub(',', '', ris_df[, eval(v)]))
}

Список numeric_vars - это список переменных, в настоящее время строковых объектов (например, 1,000), которые я хочу превратить в целые числа.

1 Ответ

0 голосов
/ 04 ноября 2018

Сначала я думаю, что вы должны использовать with=FALSE, чтобы включить data.frame -подобный синтаксис для работы с data.table объектами.

ris_df[, eval(v), with = FALSE] <- as.numeric(gsub(',', '', ris_df[, eval(v), with = FALSE]))

Во-вторых, проверьте, что вывод от gsub(',', '', dt[, eval(v), with=F])

library(data.table)
test <- rep("1,000",10) 
dt <- data.table(test)
v <- "test"
dt[, v, with=FALSE] <- as.numeric(gsub(',', '', dt[, eval(v), with=F]))
> gsub(',', '', dt[, eval(v), with=F])
[1] "c(\"1000\" \"1000\" \"1000\" \"1000\" \"1000\" \"1000\" \"1000\" \"1000\" \"1000\" \"1000\")"

Как видите, он возвращает только одну большую строку! Это может быть поведение data.table, поскольку оно хорошо работает для data.frame объектов

df <-data.frame(dt, stringsAsFactors = F)
> as.numeric(gsub(',', '',df[, eval(v)]))
 [1] 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...