【问题标题】:How to delete rows that have a point in the name? [closed]如何删除名称中包含点的行? [关闭]
【发布时间】:2021-11-26 16:08:20
【问题描述】:

我想从一个非常大的数据库中删除重复的行,这些行由名称中的点定义(例如 531.1、531.2、531.3)。 例如,我应该删除前 3 行,但保留其中一个名称为 531,因此对于由近 14000 行组成的数据库而言

这是一个可重现的例子:

    cell_id <- c("531.1", "531.2","531.3", "535.1","535.2","540")
    value <- c(1,1,1,8,8,15)
    df <-data.frame(cell_id, value)

  cell_id value
1   531.1     1
2   531.2     1
3   531.3     1
4   535.1     8
5   535.2     8
6     540    15

【问题讨论】:

标签: r dataframe subset rowname


【解决方案1】:

假设您的行是/似乎是相同的,否则您可以对数据集进行重复数据删除。下面的代码将始终保留第一行。

df <- data.frame(cell_id = c("531.1", "531.2","531.3", "535.1","535.2","540"),
                 value   = c(1,1,1,8,8,15))

library(tidyverse)
df %>%
  mutate(cell_id = str_remove(cell_id, "\\..*")) %>%
  group_by(cell_id) %>%
  distinct(., .keep_all = TRUE) %>%
  ungroup()

给出:

  cell_id value
1     531     1
2     535     8
3     540    15

【讨论】:

  • 谢谢,但它不起作用,我获得了相同的数据库
  • 请查看我对您的示例数据的更新。
  • 它有效,谢谢!不过,我仍然需要修复名称,删除“.1”字符串
  • 查看更新的代码以删除点和后面的所有内容。
  • 它在示例中完美运行,但在我的数据库中它只保留前 2 行(例如 531 和 535)并删除其他 14000 行。不明白为什么
猜你喜欢
  • 1970-01-01
  • 2023-03-09
  • 2018-05-09
  • 1970-01-01
  • 2020-06-18
  • 1970-01-01
  • 2021-06-22
  • 2014-12-07
  • 1970-01-01
相关资源
最近更新 更多