Столбец возвращается с отрицательным синалом в конце поля в R - PullRequest
0 голосов
/ 06 июня 2018

Я пытаюсь запустить этот код в SQL Server в R Studio ...

CASE 
   WHEN COLUMN1 LIKE '%-%' 
      THEN CAST((REPLACE(COLUMN1, '-', '') AS NUMERIC) * -1 
      ELSE COLUMN1 
END VALUE

Я использую таблицу данных, поскольку в моем файле 2 ГБ, я пытался использоватьthis:

MYDATATABLE[, newfield:=ifelse((COLUMN1 %like% '-'), ***replace '-' for nothing and mutiply this for "-1"***, COLUMN1)]

Столбец начинается с отрицательного знака в конце значения - вот так:

COLUMN1
--------
 55.400-
 60.440-
 61.280-
136.400-
506.333-

1 Ответ

0 голосов
/ 06 июня 2018

Если я правильно понял ваш вопрос, то вы можете попробовать двухэтапный процесс.

Вместо медленного выполнения ifelse вы можете сначала создать новый столбец new_col, если col1 имеет -, назначивминус числового значения col1 после удаления - из col1.Затем замените значение NA в new_col числовым значением col1.

library(data.table)

DT[grepl("-", col1), 
   new_col := - as.numeric(gsub("-", "", col1))][is.na(new_col), new_col := as.numeric(col1)]

, что дает

> DT
    col1 id new_col
1:  -123  1    -123
2: 1233-  2   -1233
3:    45  3      45


Пример данных:

DT <- data.table(col1 = c("-123","1233-", "45"),
                 id = c(1,2,3))
#    col1 id
#1:  -123  1
#2: 1233-  2
#3:    45  3
...