有条件地选择列之间的值

时间:2014-10-07 11:19:29

标签: r algorithm matrix dplyr

有一个矩阵:

        A   B

        0   36
        0   4
        4   24
        0   13
        0   11
        11  13
        0   6
        6   20
        0   12
        12  20
        0   11
        0   33
        33  40
        0   31
        0   5
        5   39
        0   7
        7   32
        0   34
        0   13
        0   16
        16  24

我想:

1)首先对列B进行排序(保持列A和列B之间的相同对)以进行查找 最小的值,比如x1。在这个矩阵中,x1是" 4"。

2)然后在A列中找到大于或等于x1的值。(排序列A可以 让这一步更容易。在A列和B列之间保持相同的对。) 在列B中匹配的paird值中,列A中的值更大 等于或等于x1,找到最小的值,比如说x2。

在此矩阵中,A列中有4,5,6,7 ....大于或等于x1,4。 在列A和列B之间的匹配对中,8是最小的。

3)然后在A中找到大于或等于x2的值。 在B中匹配的paird值中,A中的值更大 等于或等于x2,找到最小的值,比如说x3。

4)等等等等。

如何使用R来完成此任务?使用" dplyr"? 谢谢你的帮助。

1 个答案:

答案 0 :(得分:0)

我最终不确定你想要什么,但我认为你可以在没有dplyr的情况下完成这项任务。我使用subset()min()按照您在问题中描述的内容进行了操作。请注意我这里有一个数据框,而不是矩阵。 mydf是你的数据框架。

foo <- mydf[order(mydf$B),] #sort your data frame
x1 <- min(foo$B)

#> x1
#[1] 4

foo2 <- subset(foo, A >= x1)
x2 <- min(foo2$B)

#> x2
#[1] 8

foo3 <- subset(foo2, A >= x2)
x3 <- min(foo3$B)