【问题标题】:finding a certain value in a data frame在数据框中找到某个值
【发布时间】:2022-11-06 16:33:45
【问题描述】:

我想检查数据框中两列之间的关系并提取满足特定关系的最后一个元素。

t    x   y 
1.5 875 450
1.3 460 232
1.1 225 125
1.7 1725 900
1.6 720 460
2.0 22  14
1.7 775 450
1.5 880 450
2.4 870 455
1.1 425 220
1.8 1750 910
1.3 560 320
1.3 430 232
2.1 3090 1840
2.0 1750 7950
1.7 170 895
1.1 350 220
1.2 80 45
1.8 169 880
1.7 1700 900
1.9 230 130
2.1 540 237
0.8 50 28

所以我希望提取满足的最后一个 y 点:y >= 0.45 x 。问题是y 将继续采用不同的值,我只想提取最后一个高于或等于 0.45 x 的 y 值。

谢谢您的帮助

【问题讨论】:

    标签: r dataframe position


    【解决方案1】:

    我们可以创建条件,使用which 提取索引,返回max 索引并使用它来提取'y'的值

    with(df, y[max(which(y >= 0.45 *x))])
    [1] 28
    

    数据

    df <- structure(list(t = c(1.5, 1.3, 1.1, 1.7, 1.6, 2, 1.7, 1.5, 2.4, 
    1.1, 1.8, 1.3, 1.3, 2.1, 2, 1.7, 1.1, 1.2, 1.8, 1.7, 1.9, 2.1, 
    0.8), x = c(875L, 460L, 225L, 1725L, 720L, 22L, 775L, 880L, 870L, 
    425L, 1750L, 560L, 430L, 3090L, 17500L, 1700L, 350L, 105L, 1690L, 
    1700L, 230L, 540L, 50L), y = c(450L, 232L, 125L, 900L, 460L, 
    14L, 450L, 450L, 455L, 220L, 910L, 320L, 232L, 1840L, 7950L, 
    895L, 220L, 45L, 880L, 900L, 130L, 237L, 28L)), 
    class = "data.frame", row.names = c(NA, 
    -23L))
    

    【讨论】:

    • 谢谢 :) 它工作得很好(哪个功能完全是我在看的)
    【解决方案2】:

    你可以做:

    with(df, y[tail(which(y >= 0.45*x), 1)])
    

    【讨论】:

    • 谢谢!它作为第一条评论
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-05-04
    • 2023-01-17
    • 2017-06-11
    • 1970-01-01
    • 1970-01-01
    • 2023-03-20
    • 2023-03-16
    相关资源
    最近更新 更多