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

How to update dataframe values based on conditions?

我需要了解如何根据条件更新 R 中的数据帧值,然后使用查询 SQL 服务器进行计算并替换数据帧中的值。

例如,现在我的数据框如下所示:

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 列中是否存在描述不等于 "temp"

  2. 的任何 0 值
  3. 如果有,则运行一个SQL查询以计算薪水并为薪水为0的每个特定用户更新数据框中的0值,并且不是温度

  4. 然后按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"}

我会尝试这样的事情,但如果不了解您需要查询的 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)