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

标签 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) 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         

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

最佳答案

您与 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     

关于r - 向数据框中添加新列并使用特定逻辑中的值填充行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22058493/

相关文章:

r - 在 R 中生成具有定义参数的表

html - 如何在 HTML knitr 文档的头部添加 javascript?

r - R中的模数错误

r - 上传,转换xlsx文件和下载结果 Shiny

r - 查找(分组后)总和为特定值的所有日期行索引

r - 为什么函数 rbind.data.frame 在 do.call 中表现不同

python - 匹配 2 个数据集之间列中的值,更新多个列

R 带/不带 dplyr 每行 : create new columns as combinations of prev. 列

r - 为数据帧中的每个组创建长度为 n 的重复数

python - 合并两个列标题并在多索引数据帧 python/在列名称上方添加列中指定新名称