gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 09:19:27 24 4
gpt4 key购买 nike

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

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com