我一直在寻找你的帖子,谈论用一个第二列基于条件替换一个列的值,但它们没有用。
我将尝试简化我的两个数据框:
> paircomparison
V1 V2 V3 V4
A1 A1 A2 A2
A1 A1 A3 A3
A1 A1 A4 A4
A2 A2 A1 A1
A2 A2 A3 A3
A2 A2 A4 A4
A3 A3 A1 A1
A3 A3 A2 A2
A3 A3 A4 A4
A4 A4 A1 A1
A4 A4 A2 A2
A4 A4 A3 A3
>Ids
V1 V2
A1 London
A2 Roma
A3 Paris
A4 New York
我想每次将paircomparison [,1:4]中的值替换为Ids $ V1中的值,其值为Ids $ V2。
我一直在尝试以下循环:
for (x in paircomparison[,1:4]){
if (x == Ids[,1]){
x <- Ids[,2])}
}
但它不起作用。我对R脚本很新,很可能我在脚本中缺少一些步骤。
答案 0 :(得分:0)
我们可以尝试
paircomparison[] <- lapply(paircomparison, function(x) setNames(Ids$V2, Ids$V1)[x])
paircomparison
# V1 V2 V3 V4
#1 London London Roma Roma
#2 London London Paris Paris
#3 London London New York New York
#4 Roma Roma London London
#5 Roma Roma Paris Paris
#6 Roma Roma New York New York
#7 Paris Paris London London
#8 Paris Paris Roma Roma
#9 Paris Paris New York New York
#10 New York New York London London
#11 New York New York Roma Roma
#12 New York New York Paris Paris
或者只是
paircomparison[] <- setNames(Ids$V2, Ids$V1)[as.matrix(paircomparison)]
答案 1 :(得分:0)
我们可以unlist
数据框并使用match
来比较值
paircomparison[] <- Ids$V2[match(unlist(paircomparison), Ids$V1)]
paircomparison
# V1 V2 V3 V4
#1 London London Roma Roma
#2 London London Paris Paris
#3 London London NewYork NewYork
#4 Roma Roma London London
#5 Roma Roma Paris Paris
#6 Roma Roma NewYork NewYork
#7 Paris Paris London London
#8 Paris Paris Roma Roma
#9 Paris Paris NewYork NewYork
#10 NewYork NewYork London London
#11 NewYork NewYork Roma Roma
#12 NewYork NewYork Paris Paris