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 <- 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
我希望您能为适当的“last”和“nth”函数调用返回以下内容:
ranking(df, "TX", "last")
State y
1 TX 5
ranking(df, "TX", 2)
State y
1 TX 3