gpt4 book ai didi

R data.table 保留组的第一个非 NA 值直到组末尾

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

我想保留每个组的第一个非 NA 值(称为基线)到相应组的末尾,如下所示。

我拥有的数据:

data <- data.table(id=rep(c(1,2,3),each=4), value=c(12, 10, 17, 19, 21, 22, 34, 18, NA, 12, 32, 18))



id value
1: 1 12
2: 1 10
3: 1 17
4: 1 19
5: 2 21
6: 2 22
7: 2 34
8: 2 18
9: 3 NA
10: 3 12
11: 3 32
12: 3 18

我想保留每个组的第一个非 NA 值,如下所示:

   id value BASE
1: 1 12 12
2: 1 10 12
3: 1 17 12
4: 1 19 12
5: 2 21 21
6: 2 22 21
7: 2 34 21
8: 2 18 21
9: 3 NA NA
10: 3 12 12
11: 3 32 12
12: 3 18 12

请注意id=3,其第一个值为NA,不应保留。

最佳答案

使用 .SD 过滤 NA 值并进行分配:

data[!is.na(value), BASE := .SD[1L], by = id, .SDcols = "value"]

关于R data.table 保留组的第一个非 NA 值直到组末尾,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57087428/

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