【问题标题】:Extracting maximum values of variable that within range提取范围内变量的最大值
【发布时间】:2019-02-21 23:33:10
【问题描述】:

我有一个包含一系列变量的数据框,如下所示:

Name <- paste(letters[1:26])
Time1 <- runif(n = 26, min = 0,max= 500)
Time2 <- runif(n =26, min = 0,max= 500)
V4 <- runif(n = 26, min = 0, max = 1000 )
df <- data.frame(Name, Time1,Time2, V4)

我想找出存在于Time1Time2 特定范围内的V4 的最大值。例如,我会检查所有存在Time 1 &gt;=0Time2 &lt;= 10Time1 &gt;= 10Time2 &lt;= 20Time1 &gt;=20Time2 &lt;=30...等的数据,并找到V4的最大值并且在这些范围内对应Name

有人对如何做到这一点有任何建议吗?

【问题讨论】:

    标签: r dataframe range max intervals


    【解决方案1】:
    • 对于每对时间界限,使用例如子选择数据框

      df2 &lt;- df[(df$Time1&gt;=0) &amp; (df$Time1&lt;10), ]

    • 将其与which.max 和列选择结合以获得行索引:

      idx &lt;- which.max(df2$V4)

    • df2[idx, 'Name'] 应该给你你想要的。

    【讨论】:

    • @42-: 对,抱歉,已修复。
    • 谢谢!如果有很多间隔,有什么方法可以更有效地做到这一点?在示例中,我只列出了几个,但在我的实际数据中,我想检查大约 100 个间隔的最大值,单独输入会很耗时。
    • 我会创建一个类似get_max_interval &lt;- function(a, b) { ...} 的函数,其中ab 替换上面代码中的010。然后制作 a、b 对的列表/矩阵,并在该列表上使用 apply 函数。
    猜你喜欢
    • 2014-07-18
    • 2020-10-03
    • 2016-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多