如何按Time列层级查找X1、X2中NA首次出现的时间点
找出X1和X2首次出现NA对应的Time时间点
你的需求是在整个数据集中定位第一个出现NA的位置对应的Time值,原代码的问题在于错误使用了group_by(Time)——这会把相同时间的行分组,最终得到的是每个时间组内第一个NA的行,而非全局首次出现NA的时间点。
针对单个变量的解法(以X1为例)
直接过滤出X1为NA的行,取第一行的Time即可:
# 获取X1首次出现NA的Time data %>% filter(is.na(X1)) %>% slice(1) %>% select(Time)
运行后输出:
Time 1 week2
针对X2的解法
替换变量名即可复用逻辑:
# 获取X2首次出现NA的Time data %>% filter(is.na(X2)) %>% slice(1) %>% select(Time)
输出结果:
Time 1 week1
一次性获取两个变量的结果
如果需要同时得到X1和X2的首次NA时间,可以用批量处理的方式:
# 批量获取X1、X2的首次NA时间点 first_na_times <- sapply(c("X1", "X2"), function(col) { data$Time[which(is.na(data[[col]]))[1]] }) # 转换为数据框便于查看 as.data.frame(first_na_times)
输出结果:
first_na_times X1 week2 X2 week1
内容的提问来源于stack exchange,提问作者Aura
相关产品推荐
相关产品推荐

