由于 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/