相关疑难解决方法(0)

dplyr filter:获取具有最小变量的行,但仅获取第一个if多个最小值

我希望使用一种分组过滤器dplyr,在每个组中只返回具有最小变量值的行x.

我的问题是:正如预期的那样,在多个最小值的情况下,返回具有最小值的所有行.但在我的情况下,如果存在多个最小值,我只想要第一行.

这是一个例子:

df <- data.frame(
A=c("A", "A", "A", "B", "B", "B", "C", "C", "C"),
x=c(1, 1, 2, 2, 3, 4, 5, 5, 5),
y=rnorm(9)
)

library(dplyr)
df.g <- group_by(df, A)
filter(df.g, x == min(x))
Run Code Online (Sandbox Code Playgroud)

正如所料,返回所有最小值:

Source: local data frame [6 x 3]
Groups: A

  A x           y
1 A 1 -1.04584335
2 A 1  0.97949399
3 B 2  0.79600971
4 C 5 -0.08655151
5 C 5  0.16649962
6 C 5 -0.05948012 …
Run Code Online (Sandbox Code Playgroud)

r dplyr

66
推荐指数
5
解决办法
4万
查看次数

从最接近给定元素的值的向量返回索引

我有一个元素列表,如

A=
  0.992688
  0.892195
  0.889151
  0.380672
  0.180576
  0.685028
  0.58195
Run Code Online (Sandbox Code Playgroud)

给定一个输入元素,如0.4,如何找到保存最接近此数字的数字的索引.例如,A[4] = 0.380672 最接近0.4.因此,它应该返回到4

r

6
推荐指数
2
解决办法
1267
查看次数

为什么命令在 R 的管道运算符中不起作用,但在管道之外却运行得很好?

我的数据框包含选项数据。我想为每个交易日找到最接近货币的选项。很遗憾

ir_OEX_data %>% group_by(quotedate) %>% which.min(abs(moneyness_call  - 1))
Run Code Online (Sandbox Code Playgroud)

导致以下错误:

which.min(., abs(ir_OEX_data$moneyness_call - 1)) 中的错误:未使用参数 (abs(ir_OEX_data$moneyness_call - 1))

但当我单独跑步时:

 which.min(abs(ir_OEX_data$moneyness_call  - 1))
Run Code Online (Sandbox Code Playgroud)

该命令运行得非常好。

我在这里犯了什么错误?

r

2
推荐指数
1
解决办法
1089
查看次数

标签 统计

r ×3

dplyr ×1