R 创建按因子级别设置条件的ifelse语句

R 创建按因子级别设置条件的ifelse语句,r,R,我是R的新手,如果这是显而易见的,我很抱歉。但是,我已经在这个问题上纠缠了一段时间,但到目前为止,我可能无法找到答案 数据帧: 1 b c id e 2 0 1 45 5 3 1 0 45 7 4 0 1 48 5 5 1 0 46 7 预期结果: 1 b c id e f 2 0 1 45 5 1 3 1 0 45 7 1 4 0 1 48 5 0 5 1 0 46 7 0 我正在尝试做的是:我正在尝试为具有相同ID的人创建基于b和c级别的F列。E列和其他省略的值对我来说仍然很重

我是R的新手,如果这是显而易见的,我很抱歉。但是,我已经在这个问题上纠缠了一段时间,但到目前为止,我可能无法找到答案

数据帧:

1  b c id e
2  0 1 45 5
3  1 0 45 7
4  0 1 48 5
5  1 0 46 7
预期结果:

1 b c id e f
2 0 1 45 5 1
3 1 0 45 7 1
4 0 1 48 5 0
5 1 0 46 7 0
我正在尝试做的是:我正在尝试为具有相同ID的人创建基于b和c级别的F列。E列和其他省略的值对我来说仍然很重要,因此我无法折叠ID上的数据

我得到的最接近的结果是:

    library(dplyr)
    df2 <- df %>% 
     group_by(id) %>%
     mutate(ifelse(b == 1 & c == 1, 1, 0))
库(dplyr)
df2%
分组依据(id)%>%
变异(如果其他(b==1&c==1,1,0))

但是,我认为我的问题是,我没有正确使用
dplyr::group_by
,因此我基本上是在做一个基本的
ifelse
语句。

这里不需要
ifelse

df %>% 
  group_by(id) %>%
  mutate(f = as.integer(any(b) &  any(c)))
# A tibble: 4 x 5
# Groups: id [3]
#      b     c    id     e     f
#  <int> <int> <int> <int> <int>
#1     0     1    45     5     1
#2     1     0    45     7     1
#3     0     1    48     5     0
#4     1     0    46     7     0
df%>%
分组依据(id)%>%
变异(f=as.integer(任意(b)和任意(c)))
#一个tibble:4x5
#组别:id[3]
#b c id e f
#      
#1     0     1    45     5     1
#2     1     0    45     7     1
#3     0     1    48     5     0
#4     1     0    46     7     0

那么b和c如何使id=45的f=1和其他两个为0?因为主题的两列都有一个1。但是,只出现一次的受试者只能观察到b或c。