热线电话:13121318867

登录
2019-04-10 阅读量: 650
在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
5
关注作者
收藏
评论(0)

发表评论

暂无数据