我有这样一个数据集:
df <- data.frame(id=c(1:4), time_1=c(1, 0.9, 0.2, 0), time_2=c(0.1, 0.4, 0, 0.9), time_3=c(0,0.5,0.3,1.0))
id time_1 time_2 time_3
1 1.0 0.1 0
2 0.9 0.4 0.5
3 0.2 0 0.3
4 0 0.9 1.0
我想为每一行确定第一列包含0,并提取相应的数字(作为colname的最后一个元素),得到:
id time_1 time_2 time_3 count
1 1.0 0.1 0 3
2 0.9 0.4 0.5 NA
3 0.2 0 0.3 2
4 0 0.9 1.0 1
您有tidyverse
解决方案吗?
2条答案
按热度按时间yacmzcpb1#
我们可以使用
max.col
或者使用
dplyr
-使用if_any
检查每行的"时间"列中是否有任何0,如果有,则使用max.col
(pick
来自devel版本,可以替换为across
)返回case_when
中"第一个" 0值的索引fcg9iug32#
您可以执行以下操作: