R - Add a new column to a dataframe using matching values of another dataframe

前端 未结 3 708
南旧
南旧 2020-12-04 18:07

I am trying to fill in table1 with matching val2 values of table2

table1$New_val2 = table2[table2$pid==table1$pid,]$val2

But I get

相关标签:
3条回答
  • 2020-12-04 18:49

    I am not sure if you mean this but you might use:

    newtable <- merge(table1,table2, by  = "pid") 
    

    This will create a new table called newtable, with 3 columns and those values matched by the id, in this case "pid".

    0 讨论(0)
  • 2020-12-04 18:59

    merge(table1, table2[, c("pid", "val2")], by="pid")

    Add in the all.x=TRUE argument in order to keep all of the pids in table1 that don't have matches in table2...

    You were on the right track. Here's a way using match...

    table1$val2 <- table2$val2[match(table1$pid, table2$pid)]

    0 讨论(0)
  • 2020-12-04 19:04

    I'm way late here, but in case anybody else asks the same question:
    This is exactly what dplyr's inner_merge does.

    table1.df <- dplyr::inner_join(table1, table2, by=pid)
    

    The by-command specifies which column should be used to match the rows.

    EDIT: I used to have so much difficulty remembering it's a [join], and not a [merge].

    0 讨论(0)
提交回复
热议问题