r - 有条件地创建多个变量

标签 r dplyr tidyverse

我正在尝试使用 R dplyr 根据条件创建多个变量。我必须将相同的条件写三次才能完成这项工作,但我猜测有一种有效的方法可以通过一次编写条件并使用该条件创建多个变量来完成此任务。我尝试这样做的原因是,如果条件发生变化,在一个位置更新条件会比更新三次更容易。请帮忙。

例子:

当前解决方案:

library(dplyr)

x = c(12,8,3)

df<-data.frame(x)

y<- df %>% mutate( a = ifelse(x>10 ,1,
                       ifelse(x>5  ,11,0)),

                   b = ifelse(x>10 ,2,
                       ifelse(x>5  ,12,0)),

                   c = ifelse(x>10 ,3,
                       ifelse(x>5  ,13,0))            
           )

寻找这样的东西:

if      x>10 then
    {a=1 b=2 c=3}
else if x>5 then
    {a=11 b=12 c=13} 
else
    {a=0 b=0 c=0}

最佳答案

定义一个函数并使用它三次:

cond <- function(x, x1, x2) 
  case_when(
     x > 10 ~ x1,
     x >  5 ~ x2,
     TRUE ~ 0)

df %>% mutate(a = cond(x, 1, 11), b = cond(x, 2, 12), c = cond(x, 3, 13))

关于r - 有条件地创建多个变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48105079/

相关文章:

r - 在对称数据帧中删除行和列满足条件

r - 检查一个数据框中的日期是否在另一个数据框中的日期范围内,并在为真时返回行

r - 通过mutate case_when通过多个条件创建新变量

r - 如何在R中按顺序重新编号组ID?

r - 在 R 中从维基百科中提取特定表格

r - 如何区分ggplot线图中的跳跃?

database - 按日期绘制 Twitter 搜索结果的词云? (使用 R)

r - t1way 在输出中生成 NA

ruby - 改变符号数组

r - 使用 Dplyr 查找数字是否减少或增加的差异