根据 R 中的特定标准替换数据框的值

标签 r replace dataframe

我有一个数据框,我想将一列的前三个值替换为其他 3 个值。我有一个列表,其中包含我想要替换的值。

让我们假设以下列表:

Orig  Replacefor
AAA   111
BBB   222
CCC   333
DDD   444
EEE   555

我有以下数据框:

id       amount
AAAXXX   5
BBBXXX   13
CCCXXX   21
DDDXXX   22
EEEXXX   8

我想要以下输出:

id      amount
111XXX  5
222XXX  13
333XXX  21
444XXX  22
555XXX  8

在我的真实示例中,x 可以是任何值,我希望保持它们不变。

非常感谢!

最佳答案

假设您的列表是一个名为 X 的数据框,并且要替换的数据框是 DF,请使用:

DF <- within(DF, id2 <- paste0(X$Replacefor[match(substr(id,1,3), X$Orig)], substr(id, 4, nchar(as.character(id)))))

编辑:已测试且工作正常。请注意,如果您的 id 列是一个因素,则需要 as.character

这将在您的数据框中创建另一列 id2。如果您想覆盖原始列,只需删除 2

关于根据 R 中的特定标准替换数据框的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17396588/

相关文章:

python - 将 DataFrame 与相似和不相交的列连接起来

r - 合并存储在列表中的数据框

r - 如何将时间格式从 1730 更改为 17 :30:00 in R?

r - 将股票价格与股息支付日期相匹配

visual-studio-2008 - Visual Studio查找无法找到所有可能性

python - 按列值对数据帧进行索引

r - 查找列之间的一对一、一对多和多对一关系

java - 更改使用函数找到的单词的背景颜色。

python - 将 [ ] 替换为 raw_input

python - 如何根据标题和列值合并两个数据框?