我有一个如下所示的数据集: enter image description here
我有两个具有相同 ID 的独特城镇(奥兰加巴德和芒格)。怎么把芒格的身份证号改成193。
答案 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)
瞧。完成