从数据集中删除特定行
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),]
然后以类似的方式删除其他行。
【讨论】:
以上是关于从数据集中删除特定行的主要内容,如果未能解决你的问题,请参考以下文章