【问题标题】:Duplicate IDs with unique data [closed]具有唯一数据的重复 ID [关闭]
【发布时间】:2021-05-12 04:38:03
【问题描述】:

我有一个如下所示的数据集: enter image description here

我有两个具有相同 ID 的独特城镇(奥兰加巴德和芒格)。如何将芒格的身份证号码更改为 193。

【问题讨论】:

  • 请阅读this post,了解如何在 R 中提出一个好的问题。特别是,请通过将dput(head(data)) 的输出编辑到您的原始问题中来包含一个可重现的示例。这将有助于人们试图回答您的问题。谢谢。

标签: r duplicates unique


【解决方案1】:

通过比较您要查找的城镇名称来选择行。按名称选择列。为选定的单元格分配一个新值。

df[df$Town.name == "Town of Munger", "ID"] <- 193

【讨论】:

  • 干得好。我正在为如何选择两个参数(在本例中为两列)来定位非常具体的数据并对其进行更改而摸不着头脑。所以我在我的回应中做了一个彻底的失败来完成它。但你教会了我如何在未来做得更好。谢谢
【解决方案2】:

Jan 的回答比我的要优雅得多。但是,我的方法仍然可以完成工作:

将来,最好提供数据供我们使用,请这样做。我重新创建了三行或您的数据以显示执行此操作的一种方法。

在 R 中创建数据

df <- data.frame(Town.ID = c( "192", "192", "171"), Town.Name = c("Town of Aurangabad", "Town of Munger", "Town of Ara"))

使用library(dplyr)filter() 命令过滤您的数据

library(dplyr)
df_filter <- filter (df, Town.Name=="Town of Munger")

使用过滤后的数据集,只需将 Town.ID 列中的值 192 更改为 193(注意:需要考虑数据as.factor() 才能工作

f_filter$Town.ID <- as.factor(df_filter$Town.ID)
levels(df_filter$Town.ID)[levels(df_filter$Town.ID)=="192"] <- "193"

现在我们要将这个数据集与原始数据集合并,但是,为了避免“芒格镇”出现两次(一次来自旧的,现在来自新的),我们需要首先在原始数据集中将其改为“NA”并删除。

df$Town.Name <- as.factor(df$Town.Name)
levels(df$Town.Name)[levels(df$Town.Name)=="Town of Munger"] <- NA

# Remove NAs
new_df <- df[(!is.na(df$Town.Name)),]

现在使用来自library(gtools)smartbind() 命令将两者结合起来

library(gtools)
Final_df <- smartbind(new_df,df_filter)

瞧。完成

【讨论】:

    猜你喜欢
    • 2017-12-19
    • 2022-08-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-22
    • 1970-01-01
    • 2015-11-26
    相关资源
    最近更新 更多