首页 > 解决方案 > R数据框插入基于其他数据框的值

问题描述

我有2个数据框如下:

df1
name    date       value df2_row df2_col
a    31-01-2019      1      1       1
b    31-01-2019      3      2       1
c    31-03-2019      5      3       3
d    31-03-2019      6      4       3
df2
name    31-01-2019 28-02-2019 31-03-2019       
a    
b    
c    
d    

我想收到这样的df2:

df2
name    31-01-2019     28-02-2019    31-03-2019       
a             1            NA             NA
b             3            NA             NA                 
c             NA           NA             5
d             NA           NA             6

有任何想法吗?

标签: rdataframe

解决方案


看起来namedateindf1与最终输出无关。假设您在列name之前有一列 ( ) NAcbind df2_rowdf2_col分配value给它们。

df2[cbind(df1$df2_row, df1$df2_col)] <- df1$value

#  31-01-2019 28-02-2019 31-03-2019
#1          1         NA         NA
#2          3         NA         NA
#3         NA         NA          5
#4         NA         NA          6

数据

假设你df2是这样的

df2 <- cbind(name = c("a", "b", "c", "d"), 
       setNames(data.frame(matrix(NA, ncol = 3, nrow = 4)), 
       c("31-01-2019","28-02-2019","31-03-2019"))) 

df2
#  name 31-01-2019 28-02-2019 31-03-2019
#1    a         NA         NA         NA
#2    b         NA         NA         NA
#3    c         NA         NA         NA
#4    d         NA         NA         NA

推荐阅读