从数据集中删除特定行

Posted

技术标签:

【中文标题】从数据集中删除特定行【英文标题】:Delete specific rows out of a dataset 【发布时间】:2015-10-15 17:45:46 【问题描述】:

我有一个包含 40 列,每列 100.000 行的数据集。因为列数太大,我想删除其中的一些。我想从 10.000-20.000 中删除行;从 30.000-40.000 和从 60.000-70.000;这样我就有了一个包含 40 列和 70.000 行的数据集。第一列是一个以 1 开头的 ID(称为 ItemID),最后一个以 100.000 结尾。谁能帮帮我。

尝试删除从 10000 到 20000 的列,但它不起作用(让数据集称为“数据”):

Data <- Data[Data$ItemID>10000 && Data$ItemID<20000]

【问题讨论】:

不是确切的行:用 ] 关闭它 toremove = c(10000:20000, 30000:40000, 60000:70000); Data[!Data$ItemID %in% toremove,] 或者干脆subset(Data, !ItemID %in% c(10000:20000, 30000:40000, 60000:70000)) 【参考方案1】:

有几种方法可以做到这一点。这样的东西适合你的需要吗?

dat <- data.frame(ItemID=1:100, x=rnorm(100))

# via row numbers
ind <- c(10:20,30:40,60:70)
dat <- dat[-ind,]

# via logical vector
ind <- with(dat,  (ItemID >= 10 & ItemID <= 20) |
                   (ItemID >= 30 & ItemID <= 40) |
                   (ItemID >= 60 & ItemID <= 70) )
dat2 <- dat[!ind,]

要将其扩展到您的数据集的规模,只需 ind 根据您的数据集的大小(乘法可能会这样做)。

【讨论】:

【参考方案2】:

我认为你应该能够做到

data <- data[-(10000:20000),]

然后以类似的方式删除其他行。

【讨论】:

以上是关于从数据集中删除特定行的主要内容,如果未能解决你的问题,请参考以下文章

有没有办法从 HDF5 数据集中删除行?

R:从R中的大型数据集中根据列中的值删除行[重复]

从COCO数据集和VOC数据集提取特定的类别

数据集中的唯一标识符,索引问题

从大型数据集中采样

怎样在sas数据集中选取某些数据行形成新的数据集