我是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::group_by
因此我基本上做了基础ifelse
声明。
答案 0 :(得分:2)
我们这里不需要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
{{1}}