r - 根据逻辑列的顺序在 DF 中创建多个新列

标签 r dataframe tidyverse data-wrangling

我正在尝试创建三个新列,其值取决于三个逻辑类型列的特定顺序。

例如我有这个:

     a     b    c 
1 TRUE  TRUE TRUE
2 TRUE FALSE TRUE
3 TRUE FALSE TRUE

并且根据是否跨行,值是否为 TRUE、TRUE、TRUE(如第 1 行中所示),然后使用值 1,1,1 创建三个新列,但如果顺序为 TRUE、FALSE、TRUE(如第 2 行中所示)和 3 那么值将是 2,3,3。请注意,TRUE 值并不 = 1,而是我根据所有三个逻辑值定义的值(总共 8 种可能的组合,每种组合由三个单独的数字定义)。所以我得到这样的东西:

     a     b    c d e f
1 TRUE  TRUE TRUE 5 5 2
2 TRUE FALSE TRUE 2 3 3
3 TRUE FALSE TRUE 2 3 3

如果有人能指出正确的方向,让我尽可能高效地完成这项工作,我将不胜感激,因为我对 R 还比较陌生。

最佳答案

如果获取列值时没有逻辑,并且您需要为每个组合单独添加条件,则可以使用 if/else

df[c('d', 'e', 'f')] <- t(apply(df, 1, function(x) {
                          if (x[1] && x[2] && x[3]) c(5, 5, 2)
                          else if (x[1] && !x[2] && x[3]) c(2, 3, 3)
                          #add more conditions
                          #....
                          }))

df
#     a     b    c d e f
#1 TRUE  TRUE TRUE 5 5 2
#2 TRUE FALSE TRUE 2 3 3
#3 TRUE FALSE TRUE 2 3 3

关于r - 根据逻辑列的顺序在 DF 中创建多个新列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62244638/

相关文章:

r - 将数据框中的小时、分钟列转换为时间格式

r - 从 R 中的列表绘制 TreeMap

r - 将从矩阵创建的没有任何列和行名称的表转换为数据框

r - 查找并删除缺失数据大于 5% 的行

python - 删除行索引并将其恢复为列

R 中双索引的滚动总和

r - 使用 ggplot2 修改点子集的形状

r - 如何通过docker以并行方式安装R包?

r - 在 dplyr 中,是否有更简洁的方法来过滤包含大于或小于数字的列?

r - 在 R 的每一列中查找并保留重复项