【问题标题】: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))

标签: r


【解决方案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),]
    

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

    【讨论】:

      猜你喜欢
      • 2011-10-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-25
      • 1970-01-01
      相关资源
      最近更新 更多