【发布时间】:2021-02-25 04:39:09
【问题描述】:
假设我有一个如下的 data.frame:
u <- as.numeric(rep(rep(1:5,3)))
w <- as.factor(c(rep("a",5), rep("b",5), rep("c",5)))
q <- data.frame(w,u)
q
w u
1 a 1
2 a 2
3 a 3
4 a 4
5 a 5
6 b 1
7 b 2
8 b 3
9 b 4
10 b 5
11 c 1
12 c 2
13 c 3
14 c 4
15 c 5
和向量:
v <- c(2,3,1)
现在我想找到相应组 [i] 中的第一行,其中向量“v”中的值 [i] 大于列“u”中的值。
结果应该是这样的:
1 a 3
2 b 4
3 c 2
我试过了:
fun <- function (m) {
first(which(m[,2]>v))
}
ddply(q, .(w), summarise, fun(q))
and got as a result:
w fun(q)
1 a 3
2 b 3
3 c 3
因此,ddply 似乎只从向量“v”中获取第一个值。
有人知道怎么解决吗?
【问题讨论】:
-
ddply返回单个值,因为您正在应用整个列m[,2]即q[,2]以及v是完整向量而不是每个组的对应元素这一事实
标签: r