【发布时间】:2016-06-27 11:33:21
【问题描述】:
我需要通过dataframe进行搜索,如下: 如果等级在时间 = 1 时高于 50%,然后在时间 = 3 时下降到 50% 以下,然后在时间 = 4 时高于并在时间 = 7 时低于,然后在时间 8 时降级,在时间 12 时降到以下,等等。 ...然后它在上面持续了 2 秒,然后是 3 秒,然后是 4 秒,依此类推。 ...因此所需的最终结果是超过 50% 的最大时间,在这种情况下为 4 秒(根据下面的数据帧部分)。 所以我需要将 thje 值 4 分配给 max(maxGradeTimePeriod) 请问这个简单的代码?提前致谢。
这是我迄今为止尝试过的(许多尝试中的 1 次!):
maxGradeTimePeriod <- c()
i <- 1
while (i <= nrow(df)) {
if (0.5 <= df$Grade[i]) {
p <- i+1
k <- p
while (k < (nrow(df)-1)) {
if (df$Grade[k] < 0.5) {
time <- (df$Time[k-1])-df$Time[i]
print(time)
maxGradeTimePeriod <- append(maxGradeTimePeriod, time)
}
else {
time <- max(df$Time)-df$Time[i]
maxGradeTimePeriod <- append(maxGradeTimePeriod, time)
}
k <- k+1
}
}
i <- i+1
}
else {
i <- i+1
}
}
样本数据框:
time grade
1 0.5
2 0.5
3 0.1
4 0.5
5 0.5
6 0.5
7 0.1
8 0.5
9 0.5
10 0.5
11 0.5
12 0.1
13 0.5
14 0.5
15 0.5
16 0.1
17 0.5
18 0.5
19 0.1
20 0.5
【问题讨论】:
-
请附上您的数据框样本
-
我阅读了您的信息,但不明白您想要获得什么。 maxGradeTimePeriod?别的东西?给出输入数据的样本,并为其正确输出。
-
欢迎来到 StackOverflow。请花时间阅读how to provide a great R example 上的这篇文章以及如何提供minimal, complete, and verifiable example 并相应地修改您的问题。 how to ask a good question 上的这些提示也可能有用。
-
你能不能也给你的数据框的标题?此外,脚本也会出错。
-
while内的else中似乎多了一个右括号
标签: r loops nested-loops