gpt4 book ai didi

r - 在 data.table 中按组删除特定时间内相同的连续值

转载 作者:行者123 更新时间:2023-12-04 10:54:36 24 4
gpt4 key购买 nike

data.table ,如果某一列具有相同的值连续出现一定次数,我想删除相应的行。我也想按组进行。

例如,说 dt是我的 data.table .如果相同的值在 Petal.Width 中连续出现超过 2 次,我想删除行按 Species 分组.

dt <- iris[c(1:3, 7:7, 51:53, 62:63), ]
setDT(dt)
# Sepal.Length Sepal.Width Petal.Length Petal.Width Species
# 1 5.1 3.5 1.4 0.2 setosa
# 2 4.9 3.0 1.4 0.2 setosa
# 3 4.7 3.2 1.3 0.2 setosa
# 7 4.6 3.4 1.4 0.3 setosa
# 51 7.0 3.2 4.7 1.4 versicolor
# 52 6.4 3.2 4.5 1.5 versicolor
# 53 6.9 3.1 4.9 1.5 versicolor
# 62 5.9 3.0 4.2 1.5 versicolor
# 63 6.0 2.2 4.0 1.0 versicolor

所需的结果是具有以下行的 data.table。
# 7           4.6         3.4          1.4         0.3     setosa
# 51 7.0 3.2 4.7 1.4 versicolor
# 63 6.0 2.2 4.0 1.0 versicolor

最佳答案

这是一个选项:

library(data.table)
setDT(dt)[dt[,{
rl <- rleid(Species, Petal.Width)
rw <- rowid(rl)
.I[!rl %in% rl[rw > 1]]
}]]

输出:
   Sepal.Length Sepal.Width Petal.Length Petal.Width    Species
1: 4.6 3.4 1.4 0.3 setosa
2: 7.0 3.2 4.7 1.4 versicolor
3: 6.0 2.2 4.0 1.0 versicolor

关于r - 在 data.table 中按组删除特定时间内相同的连续值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58868550/

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