基于R中的另一个文件重新编号文件

时间:2017-11-06 03:56:23

标签: r

使用R,我想基于另一个文件替换一个文件的内容。这个例子可以让我更容易看到我想要做的事情:

File1中:

  [,1] [,2] [,3]
1  5    3   4
2  6    3   0
3  7    6   5
4  9    7   4

文件2

     [,1] [,2]
[1,]    1    3
[2,]    2    4
[3,]    3    5
[4,]    4    6
[5,]    5    7
[6,]    6    9

我想用file2中第1列的匹配替换file1中的数字。例如,file1中的5将被3 nad 7 by 5等替换。输出文件将是:

 [,1] [,2] [,3]
1  3    1   2
2  4    1   0
3  5    4   3
4  6    5   2

2 个答案:

答案 0 :(得分:3)

这让你大部分时间都可以。它假设您事先知道file1有3列 - 如果不是,您可以使用ncol = ncol(file1)

file3 <- matrix(match(file1, file2[, 2]), ncol = 3)

file3
     [,1] [,2] [,3]
[1,]    3    1    2
[2,]    4    1   NA
[3,]    5    4    3
[4,]    6    5    2

生成NA,因为不匹配0.您可以替换它。

file3[is.na(file3)] <- 0

答案 1 :(得分:1)

通过创建查找向量并使用match,可以选择以下选项。 file3是最终输出。

look_up <- file2[, 2]
names(look_up) <- file2[, 1]

value <- match(file1, look_up)
value[is.na(value)] <- 0

file3 <- matrix(value, ncol = 3)
file3
#      [,1] [,2] [,3]
# [1,]    3    1    2
# [2,]    4    1    0
# [3,]    5    4    3
# [4,]    6    5    2

数据

file1 <- matrix(c(5, 3, 4, 6, 3, 0, 7, 6, 5, 9, 7, 4), ncol = 3, byrow = TRUE)
file2 <- matrix(c(1:6, 3:7, 9), ncol = 2)