【发布时间】:2021-05-12 04:38:03
【问题描述】:
【问题讨论】:
-
请阅读this post,了解如何在 R 中提出一个好的问题。特别是,请通过将
dput(head(data))的输出编辑到您的原始问题中来包含一个可重现的示例。这将有助于人们试图回答您的问题。谢谢。
标签: r duplicates unique
【问题讨论】:
dput(head(data)) 的输出编辑到您的原始问题中来包含一个可重现的示例。这将有助于人们试图回答您的问题。谢谢。
标签: r duplicates unique
通过比较您要查找的城镇名称来选择行。按名称选择列。为选定的单元格分配一个新值。
df[df$Town.name == "Town of Munger", "ID"] <- 193
【讨论】:
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)
瞧。完成
【讨论】: