【发布时间】:2019-11-15 00:24:42
【问题描述】:
在data.table 中,如果某个列的相同值连续出现一定次数,我想删除相应的行。我也想按组来做。
例如,假设dt 是我的data.table。如果在Petal.Width 中按Species 分组,相同的值连续出现2 次以上,我想删除行。
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
【问题讨论】:
-
这样的?
dt[, .SD[.N == 1], by = rleid(Species, Petal.Width)] -
@RonakShah 如果我在 j 的 rleid 中也使用 Species 可以吗?
-
@RonakShah 非常接近。我也想在结果中包含
Species和Petal.Width。 -
@chinsoon12 当然可以。 @Suren 我是这么认为的,因此没有将其作为答案。 :)
标签: r data.table