Как обновить значения данных в зависимости от условий? - PullRequest
0 голосов
/ 30 мая 2019

Мне нужно посмотреть, как я могу обновить значения фрейма данных в R на основе условия, а затем использовать запрос к SQL Server, чтобы выполнить вычисления и заменить это значение в фрейме данных.

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

empID     name     description     annl_salary
123       John     driver          0
789       Smith    temp            0
246       Joe      manager         60000

Так, например, любой пользователь с именем «temp», столбец annl_salary для них всегда будет показывать 0, но для описания «driver» иногда будет 0 для этого описания, и поэтому мне нужно посмотреть, есть ли это способ:

  1. Проверьте, есть ли какие-либо значения 0 в столбце annl_salary, где описание НЕ равно "temp"

  2. Если таковые имеются, запустите SQL-запрос для расчета зарплаты и обновите значение 0 в кадре данных для каждого конкретного пользователя, который имеет зарплату 0 и не является временным

  3. Затем отсортируйте фрейм данных по annl_salary и описанию в порядке возрастания и экспортируйте в файл xlsx

Я все еще новичок в R, и пока у меня есть это, но я застрял:

library(RODBC)
library(xlsx)

data <- read.xlsx("Book1.xlsx", sheetName = "Sheet1")

if(data$annl_salary == 0 & data$description != "temp"){data$annl_salary = "SQL Query from RODBC to update the values for each user with 0 and not driver"}

1 Ответ

1 голос
/ 30 мая 2019

Я бы попробовал что-то подобное, но трудно понять, не понимая структуру базы данных SQL, к которой нужно обращаться.

library(RODBC)

channel <- odbcConnect("database")
sqlQuery(channel, paste("SQL QUERY"))

data$annl_salary <- ifelse(data$description != 'Temp' & data$annl_salary == 0, query, data$annl_salary)

data <- data %>%
    arrange(annl_salary)

...