1
的开始和结束我有一个data
看起来如下:功能查找条件选择
Date | Time | Temperature
16995 | "12:00" | 23
16995 | "12:30" | 24
...
17499 | "23:30" | 23
17500 | "00:00" | 24
我正在写一个函数来选择一个范围内根据一定的开始和结束的时间点的情况下。为此,我需要确定start_pt
和end_pt
索引,这些索引应与数据框中的一对行匹配。
select_case <- function(df,date,time) {
start_pt = 0
end_pt = 0
for (i in 1:nrow(df)) {
if ((date[i] == 17000) & (time[i] == "12:00")) {
start_pt <- i
return(start_pt)
} else {
next
}
}
for (i in start_pt:nrow(df)) {
if (date[i] == 17500) {
end_pt <- i - 1
return(end_pt)
break
} else {
next
}
}
return(df[start_pt:end_pt,])
}
当我打电话:
test <- select_case(data,data$Date,data$Time)
test
我想到以下几点:
Date | Time | Temperature
17000 | "12:00" | 23
17000 | "12:30" | 24
...
17499 | "23:00" | 23
17499 | "23:30" | 23
相反,我得到了
[1] 1
不知道在那里我得到它错在这里。当我分别运行R控制台中的两个for循环,并替换每个循环的相应参数时,我得到了start_pt
和end_pt
的正确索引。
我不太明白start_pt和end_pt的逻辑。您是否尝试选择固定的行数,或者您是否有兴趣根据不同的开始日期和时间来分组数据? –
因为我认为如果我需要将相同的子集功能应用于日期和时间可能不同的类似数据集(例如,不完整的数据),它会更方便。 ((data $ Date == 17000)&&(test $ Time ==“12:00”)) end < - tail(which(test($ date == 17499),n = 1) test < - test [start:end,]' – user94216
那么你想要选择固定数量的行吗?为什么不把'start_pt'和'end_pt'作为你函数的参数? –