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

时间:2014-02-27 03:34:21

标签: r dataframe

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

示例数据框:

 DeptID     Name    Age    Active 
  2        Aira     23      0        
  2        Ben      25      1        
  2        Cat      32      1
  3        Dan      28      1

所需输出:如果DeptID = 2则(如果Active = 1则Rate = 0 else Rate = 1)否则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         

我试过下面的代码,但总是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)
 }))

1 个答案:

答案 0 :(得分:4)

您使用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     

你也可以通过索引来替换数据框中的元素(从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