gpt4 book ai didi

R - 创建一个仅包含每个子集的第一行的条目的列

转载 作者:行者123 更新时间:2023-12-04 12:01:42 25 4
gpt4 key购买 nike

例如,如果我有这个数据:

ID  Value   
1 2
1 2
1 3
1 4
1 10
2 9
2 9
2 12
2 13

我的目标是找到每个 ID 子集的最小值,我希望数字位于 ID 组的第一行,同时将其他行留空,这样:

ID  Value   Start
1 2 2
1 2
1 3
1 4
1 10
2 9 9
2 9
2 12
2 13

我的第一直觉是为使用的 ID 创建索引

A <- transform(A, INDEX=ave(ID, ID, FUN=seq_along)) ## A being the name of my data

由于我是菜鸟,所以我卡在了这一点上。对于每个 ID=n,我想找到该 ID 子集的 min(A$Value) 并将其放入 ID=n 和 INDEX=1 的单元格匹配条件中。

非常感谢任何帮助!很抱歉我一直在问问题:(

最佳答案

这是一个解决方案:

within(A, INDEX <- "is.na<-"(ave(Value, ID, FUN = min), c(FALSE, !diff(ID))))

ID Value INDEX
1 1 2 2
2 1 2 NA
3 1 3 NA
4 1 4 NA
5 1 10 NA
6 2 9 9
7 2 9 NA
8 2 12 NA
9 2 13 NA

更新:

它是如何工作的? 命令 ave(Value, ID, FUN = min)应用函数 minValue 的每个子集沿着 ID 的值.例如,它返回五次 2 的向量四次9 .由于每个子集中除第一个值外的所有值都应为 NA , 函数 "is.na<-"替换 c(FALSE, !diff(ID)) 定义的逻辑索引处的所有值.这个索引是TRUE如果一个值与前一个值相同。

关于R - 创建一个仅包含每个子集的第一行的条目的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14853308/

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