具有唯一数据的重复 ID

时间:2021-02-08 14:52:15

标签: r duplicates unique

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

我有两个具有相同 ID 的独特城镇(奥兰加巴德和芒格)。怎么把芒格的身份证号改成193。

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

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)),]

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

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

瞧。完成

相关问题