热线电话:13121318867

登录
2018-10-17 阅读量: 2208
在R里如何找到某行第一个大于某值的数的位置

如数据集:

c1 c2 c3 c4 c5

1   0  3   6  9

2   1  2   10  12

3   0  4   11  13

如何返回每一行中c3-c5中第一个大于4的数值的位置,到一个新的变量中,如c6, 其对应的取值应该是4,4,3

提供一个通用的方法:

library(tidyverse)

data %>%  # 假设数据是data.frame形式,变量名'data'

    # 针对每行处理的问题可以转化为根据行数来分组

    group_by(row_number()) %>%

    # 将C1到C5的维度折叠至一个统一的维度'col_seq'

    gather(col_seq, value, 1:5) %>%

    # 根据现在组内的顺序增加‘标记’

    mutate(seq = row_number()) %>%

    # 去除原来的C1,C2列的数据

    filter(seq >= 3) %>%

    # 去除数值小于4的数据

    filter(value >=4) %>%

    # 每一组(原每一行)符合条件的第一个数据保留

    slice(1) %>%

    # 将对应的顺序标记提取出来。

    pull(seq)
0.0000
2
关注作者
收藏
评论(0)

发表评论

暂无数据
推荐帖子