有条件地用NA替换色谱柱 [英] Conditionally replace columns with NA
本文介绍了有条件地用NA替换色谱柱的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
这是我的数据示例:
m <- data.frame(swim = c(0,1,0,0), time1 = c(1,2,3,4), time2 = c(2,3,4,5))
我想在 m $ swim
中有 1
的行之后,用 NA
替换time1和time2列中的所有数字.它应该看起来像这样:
I want to replace all numbers in columns time1 and time2 with NA
after the row where there is a 1
in m$swim
. It should look like this:
n <- data.frame(swim = c(0,1,0,0), time1 = c(1,2,NA,NA), time2 = c(2,3,NA,NA))
Thank you!
推荐答案
在 dplyr
中,您可以执行以下操作:
In dplyr
you can do :
library(dplyr)
m %>%
mutate(across(starts_with('time'),
~replace(., row_number() > match(1, swim), NA)))
但是,基本的R选项会更有效.
A base R option however, would be more efficient.
cols <- grep('time', names(m))
inds <- match(1, m$swim)
m[(inds + 1):nrow(m), cols] <- NA
m
# swim time1 time2
#1 0 1 2
#2 1 2 3
#3 0 NA NA
#4 0 NA NA
这篇关于有条件地用NA替换色谱柱的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文