gpt4 book ai didi

根据值减少数据集

转载 作者:行者123 更新时间:2023-12-01 07:20:06 24 4
gpt4 key购买 nike

我有一个数据集

dtf<-data.frame(id=c("A","A","A","A","B","B","B","B"), value=c(2,4,6,8,4,6,8,10))

对于每个 id,值按升序排序

我想减少 dtf 以仅包含每个 id 的第一行该值超过指定的限制。每个 id 只有一行, 那应该是 value首先超过指定的限制。

对于此示例和 5 的限制dtf 应该减少到:
A 6
B 6

这是一个很好的方法吗?

非常感谢

最佳答案

可以用 aggregate 来完成:

dtf<-data.frame(id=c("A","A","A","A","B","B","B","B"), value=c(2,4,6,8,4,6,8,10))

limit <- 5

aggregate(value ~ id, dtf, function(x) x[x > limit][1])

结果:
  id value
1 A 6
2 B 6

更新:多列的解决方案:

示例数据框, dtf2 :
dtf2 <- data.frame(id=c("A","A","A","A","B","B","B","B"), 
value=c(2,4,6,8,4,6,8,10),
col3 = letters[1:8],
col4 = 1:8)

一个解决方案包括 ave :
with(dtf2, dtf2[ave(value, id, FUN = function(x) cumsum(x > limit)) == 1, ])

结果:
  id value col3 col4
3 A 6 c 3
6 B 6 f 6

关于根据值减少数据集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14005282/

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