我有一个数据框,我想将一列的前三个值替换为其他 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/