R-使用查找表替换数据帧中的值

R-使用查找表替换数据帧中的值,r,lookup-tables,R,Lookup Tables,最近,我在尝试使用查找表替换数据帧或矩阵中的特定值时遇到了一些问题 因此,这表示要修改的原始数据 V1 V2 V3 V4 V5 V6 V7 V8 V9 V10 V11 V12 V13 V14 1 255 255 255 255 255 255 255 255 255 255 255 255 255 255 2 255 255 255 255 255 255 255 255 3 3 255 255 255 255 3 255 255 255 255 255

最近,我在尝试使用查找表替换数据帧或矩阵中的特定值时遇到了一些问题

因此,这表示要修改的原始数据

    V1  V2  V3  V4  V5  V6  V7  V8  V9 V10 V11 V12 V13 V14
1  255 255 255 255 255 255 255 255 255 255 255 255 255 255
2  255 255 255 255 255 255 255 255   3   3 255 255 255 255
3  255 255 255 255 255   1   3   3   3   3   3 255 255 255
4  255 255   5   5   5   1   3   3   4   4   3 255 255 255
5  255   5   5   5   5   1   3   4   4   4   4 255 255 255
6  255   5   5   5   1   3   3   3   4   4   3   3 255 255
7  255 255   5   1   3   3   3   3   6   6   6   3 255 255
8  255 255   1   1   1   1   2   2   3   3   6   3 255 255
9  255 255   1   1   1   2   2   2   2   2   3   3   3 255
10 255 255 255   1   2   2   2   2   2   2   2   3   3 255
11 255 255 255   2   2   2   2   2   7   7   7   2 255 255
12 255 255 255   2   2   8   8   8   7 255 255 255 255 255
13 255 255 255 255   8   8 255 255 255 255 255 255 255 255
14 255 255 255 255 255 255 255 255 255 255 255 255 255 255
。。。下面可能是lookup.table(rows=1:9,column1=“Sub”,column2=“Main”):

目的是比较。
original.data[11,11]
[7]带有
lookup.tabel[8,“Sub”]
[7]

。。。然后写一个新的矩阵
已修改。数据[11,11]
查找。表[8,“Main”]
[2]。 到目前为止,我所想到的只是使用for循环和if语句

for (i in 1:ncol(original.data)){
  for (j in 1:nrow(lookup.table)){
    if (original.data[i,i]==lookup.table[j,1]){
      origingal.data[j,i]<-lookup.table[j,2]
    }
  }
}
for(1中的i:ncol(原始数据)){
对于(j in 1:nrow(lookup.table)){
if(原始.data[i,i]==lookup.table[j,1]){
原始数据[j,i]您可以尝试:

# x the original.data (a matrix)
# y the lookup.table
x2 <- y[match(x, y[,1]),2]
dim(x2) <- dim(x)
table(x, x2)
     x2
x       1   2   3   4   5 255
  1    13   0   0   0   0   0
  2     0  22   0   0   0   0
  3     0   0  29   0   0   0
  4     0   0   0   8   0   0
  5     0   0   0   0  11   0
  6     0   0   4   0   0   0
  7     0   4   0   0   0   0
  8     0   5   0   0   0   0
  255   0   0   0   0   0 100
#x原始数据(矩阵)
#y查找表

x2这是一个打字错误,您的数据名称是原始的。数据不是原始的。请更改它,看看会发生什么。
Error in origingal.data[j, i] <- lookup.table[j, 2] : 
  object 'origingal.data' not found
for (i in 1:ncol(original.data)){
  for (j in 1:nrow(original.data)){
    for (x in 1:nrow(lookup.table)){
      if (original.data[j,i]==lookup.table[x,1]){
        original.data[j,i]<-lookup.table[x,2]
      }
    } 
  }
}
for(i in 1:nrow(lookup.table)){
  c<-lookup.table[b,2]
  d<-lookup.table[b,3]
  original.data_modified[original.data == c] <- d
}
# x the original.data (a matrix)
# y the lookup.table
x2 <- y[match(x, y[,1]),2]
dim(x2) <- dim(x)
table(x, x2)
     x2
x       1   2   3   4   5 255
  1    13   0   0   0   0   0
  2     0  22   0   0   0   0
  3     0   0  29   0   0   0
  4     0   0   0   8   0   0
  5     0   0   0   0  11   0
  6     0   0   4   0   0   0
  7     0   4   0   0   0   0
  8     0   5   0   0   0   0
  255   0   0   0   0   0 100