r - 根据多个条件选择单行
问题描述
解决方案
一种dplyr
可能是:
df %>%
group_by(seq) %>%
mutate(choose = +(match == "y") * (cumsum(match == "y") == 1))
seq rank match choose
<fct> <fct> <fct> <int>
1 A 1 y 1
2 A 2 n 0
3 A 3 y 0
4 B 1 n 0
5 B 2 n 0
6 B 3 y 1
7 B 4 y 0
如果你想有 TRUE/FALSE 值:
df %>%
group_by(seq) %>%
mutate(choose = as.logical(+(match == "y") * (cumsum(match == "y") == 1)))
seq rank match choose
<fct> <fct> <fct> <lgl>
1 A 1 y TRUE
2 A 2 n FALSE
3 A 3 y FALSE
4 B 1 n FALSE
5 B 2 n FALSE
6 B 3 y TRUE
7 B 4 y FALSE
和同样的base R
:
with(df, ave(match, seq, FUN = function(x) +(x == "y") * (cumsum(x == "y") == 1)))
或者:
with(df, ave(match, seq, FUN = function(x) as.logical(+(x == "y") * (cumsum(x == "y") == 1))))
推荐阅读
- c++ - OpenCV - 混合/平滑对象周围的接缝
- javafx - 为什么 JavaFx 中的图像大小取决于加载是否在后台?
- javascript - 未捕获的 ReferenceError:未定义接收
- vba - 循环遍历文件夹并将 .csv 文件转换为 .txt 文件的 Visual Basic 代码
- vb.net - 'radius' 不是 VB.NET 中的参数
- regex - 正则表达式 - 从 www.anything.com 中提取单词
- python - How to make predictions using a saved RandomForest model from Orange GUI
- pygame - 玩家不动
- python - 在 python 中的 Python 中创建函数时出错
- spring-mvc - 我如何在多个复选框上调用控制器类中的方法来更新spring mvc中的记录