向数据框中添加新列并使用特定逻辑中的值填充行

Ian*_*the 4 r dataframe

我需要向数据框中添加一列,并根据现有列的某些条件来填充新添加列的值

示例数据框:

 DeptID     Name    Age    Active 
  2        Aira     23      0        
  2        Ben      25      1        
  2        Cat      32      1
  3        Dan      28      1
Run Code Online (Sandbox Code Playgroud)

期望输出:如果 DeptID = 2 那么(如果 Active = 1 那么 Rate = 0 else Rate = 1) else Rate 为空

DeptID     Name     Age    Active    Rate
  2        Aira     23      0        0    
  2        Ben      25      1        1
  2        Cat      32      1        1
  3        Dan      28      1         
Run Code Online (Sandbox Code Playgroud)

我尝试了下面的代码,但总是得到 0,请帮忙。

data = cbind(data, Rate=sapply(data$DeptID, function(x) {
   ifelse(as.character(x) %in% c(2), ifelse(as.character(data$Active) %in% c(1),1,0),0)
 }))
Run Code Online (Sandbox Code Playgroud)

Rei*_*son 5

你在正确的轨道上,ifelse但你可以在不分裂的情况下做到这一点DeptID

dat <- transform(dat, Rate = ifelse(DeptID == 2, ifelse(Active == 1, 0, 1), ""))
dat

> dat
  DeptID Name Age Active Rate
1      2 Aira  23      0    1
2      2  Ben  25      1    0
3      2  Cat  32      1    0
4      3  Dan  28      1     
Run Code Online (Sandbox Code Playgroud)

您还可以通过索引来替换数据框中的元素(dat再次从原始数据开始)来执行这些操作

dat$Rate <- "" ## add in one of the options as a default value for column
dat$Rate[dat$DeptID == 2 & dat$Active == 1] <- 0
dat$Rate[dat$DeptID == 2 & dat$Active == 0] <- 1

> dat
  DeptID Name Age Active Rate
1      2 Aira  23      0    1
2      2  Ben  25      1    0
3      2  Cat  32      1    0
4      3  Dan  28      1     
Run Code Online (Sandbox Code Playgroud)