我有一个具有 8 个唯一值的数据框
data<-data.frame(id=c("ab","cc","cc","dd","ee","ff","ee","ff","ab","dd","gg",1,"air")) >data id 1 ab 2 cc 3 cc 4 dd 5 ee 6 ff 7 ee 8 ff 9 ab 10 dd 11 gg 12 1 13 air
我创建了另一个数据框,其中包含 8 个唯一值,这些值将用作替换
library(random) replacements<-data.frame(value=randomStrings(n=8, len=2, digits=FALSE,loweralpha=TRUE, unique=TRUE, check=TRUE)) replacements V1 1 SJ 2 fH 3 TZ 4 Mr 5 oZ 6 kZ 7 fe 8 ql
我想用以下方式替换所有
data dataframe
唯一replacement dataframe
值
所有 ab 值由 SJ 替换
所有 cc 值由 fH 替换
所有 dd 值由 TZ 替换
所有 ee 值由 Mr 替换
所有 ff 值由 oZ 替换
所有 gg 值由 kZ 替换
所有 1 值由 fe 替换
所有 air 值由 ql 替换
目前,我通过以下方式实现这一目标:
data<-data.frame(id=c("ab","cc","cc","dd","ee","ff","ee","ff","ab","dd","gg",1,"air")) data$id<-as.character(data$id) replacements<-data.frame(value=randomStrings(n=8, len=2, digits=FALSE,loweralpha=TRUE, unique=TRUE, check=TRUE)) replacements$V1<-as.character(replacements$V1) for(i in 1:length(unique(data$id))){ data$id[data$id %in% data$id[i]] <- replacements$V1[i] } >data id 1 SJ 2 fH 3 fH 4 TZ 5 Mr 6 oZ 7 Mr 8 oZ 9 SJ 10 TZ 11 kZ 12 fe 13 ql
R中是否有任何基本功能可以实现?有没有比这更好的方法来屏蔽数据?