根据位置将值从一个数据帧映射到另一个数据帧

时间:2018-03-30 16:41:40

标签: r dataframe dplyr data.table plyr

我有以下2个数据框 -

第一个数据框如下所示:

id <- c(1,2,3,4)
a <- c(1,1,0,1)
b <- as.character(c(0,1,1,1))
c <- as.character(c(0,1,1,0))
d <- c(0,1,1,0)
dt <- data.frame(id,a,b,c,d, stringsAsFactors = FALSE)

> dt
  id a b c d
1  1 1 0 0 0
2  2 1 1 1 1
3  3 0 1 1 1
4  4 1 1 0 0

第二个数据框如下所示:

id <- c(1,2,2,2,2,3,3,3,4,4)
col <- c("a","a","b","c","d","b","c","d","a","b")
val <- as.character(c("t1","x1","x2","x3","x4","y2","y3","y4","z1","z2"))
values <- data.frame(id,col,val, stringsAsFactors = FALSE)

> values
   id col val
1   1   a  t1
2   2   a  x1
3   2   b  x2
4   2   c  x3
5   2   d  x4
6   3   b  y2
7   3   c  y3
8   3   d  y4
9   4   a  z1
10  4   b  z2

我正在尝试映射第二个数据帧中col列的值,以替换数据帧1中的1。

请查看以下所需的输出:

> output
   id  a  b  c  d
1:  1 t1  0  0  0
2:  2 x1 x2 x3 x4
3:  3  0 y2 y3 y4
4:  4 z1 z2  0  0

我的尝试:

我知道这可以通过直接转播数据帧来实现,但我面临长期向量问题。 Intead我使用sparseMatrix()获取数据帧1,然后我可以映射数据帧1中的原始值。

注意 - 我有一个非常大的数据,我不能使用data.table::dcast.data.table()

建议和帮助将不胜感激。

0 个答案:

没有答案