如何根据条件更新数据框值?

时间:2019-05-30 14:02:35

标签: r xlsx rodbc

我需要了解如何根据条件更新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. 检查annl_salary列中是否有0值,其中描述不等于“ 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 个答案:

答案 0 :(得分:1)

我会尝试类似的方法,但是如果不了解您需要查询的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)