r - 使用 dplyr 获取以变量为条件的 R 数据帧的第 n、第一或最后一行

标签 r dplyr

由于 nth(y, -1) 返回的是值而不是数据帧,并且到目前为止我没有成功使用 row_number() 或 slice() 我想知道我是否遗漏了任何明显的东西或者应该重新考虑该方法:

我创建了一个函数:

ranking <- function(df, state, num = "last"){
    ## Setting num for "last" condition to n() gives error
    num <- ifelse(num=="first", 1, ifelse(num=="last", -1, num)) 
    df %>%
        filter(State == state) %>%
        arrange(y, State) %>%
        slice(num)  ## Does not work for -1
}

所以对于下面的df:
df <- data.frame(State=c("TX","TX","TX","MD"),y=c(5,2,3,4))
   State y
1     TX 5
2     TX 2
3     TX 3
4     MD 4

我想为适当的“最后一个”和第 n 个函数调用返回以下内容:
ranking(df, "TX", "last")
   State y
1     TX 5
ranking(df, "TX", 2)
   State y
1     TX 3

最佳答案

library(dplyr)
ranking <- function(df, state, num = "last"){
  ## Setting num for "last" condition to n() gives error
  df %>%
    filter(State == state) %>%
    arrange(y) %>%
    slice(ifelse(num=="first", 1, ifelse(num=="last", n(), num)) )
}


df <- data.frame(State=c("TX","TX","TX","MD", "MD"),y=c(5,2,3,4,9))
ranking(df, "TX", "last")
ranking(df, "TX", 2)
ranking(df, "MD", "first")

# State     y
#    TX     5
# State     y
#    TX     3
# State     y
#    MD     4  

关于r - 使用 dplyr 获取以变量为条件的 R 数据帧的第 n、第一或最后一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43647343/

相关文章:

r - 尝试安装 R 4.0.1,但遇到 Ubuntu 问题

r - 对变量的所有离散值使用 dplyr 过滤器

r - 做什么 。 (点)和 %(百分比)在 R 中是什么意思?

r - R中%>%函数是什么意思?

sql - dplyr 中是否可以使用 cut() 样式分箱?

r - as.POSIXct.numeric(value) : 'origin' must be supplied in ggplot 中的错误

r - 如何直接使用栅格属性表对栅格进行图例并仅显示栅格中显示的类的图例?

r - 如何制作根据条件跨列多次连接的 R 循环

r - 使用 dplyr 获取零方差的列名

r - 如何根据 NA 与字母表对值进行分组