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