r - 有条件地用 NA 替换列
问题描述
这是我的数据示例:
m <- data.frame(swim = c(0,1,0,0), time1 = c(1,2,3,4), time2 = c(2,3,4,5))
我想用 in 所在的行之后替换列 time1 和 time2 中的所有NA
数字。它应该如下所示:1
m$swim
n <- data.frame(swim = c(0,1,0,0), time1 = c(1,2,NA,NA), time2 = c(2,3,NA,NA))
Thank you!
解决方案
你dplyr
可以这样做:
library(dplyr)
m %>%
mutate(across(starts_with('time'),
~replace(., row_number() > match(1, swim), NA)))
但是,基本 R 选项会更有效。
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
推荐阅读
- ios - Swift 手动保存位置 Firebase
- python - Python基于匹配用其他列填充空行
- c++ - 由于私有变量声明不继承导致的编译错误
- c++ - 构造后 const char* 的值返回空
- python - 阅读python字典(非标准文件?)
- flutter - 如何解决移动应用程序中的“被 CORS 策略阻止”?不是网络应用程序
- angular - 按文档字段过滤 Firestore 集合
- python - 将 3d numpy 数组的一部分与常数相乘
- android - 如何在 Jetpack Compose 中将当前填充应用于修改器?
- javascript - JavaScript 对象解构中的变量声明错误和混淆