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 the warning
longer object length is not a multiple of shorter object length
which is fair enough because the table lengths are not the same.
Please kindly direct me on the correct way to do this.
df = df. assign(col_name=[value1, value2, value3, ...]) And you can use the insert() function to add a new column to a specific location in a pandas DataFrame: df.
Using assign() DataFrame. assign() method can be used when you need to insert multiple new columns in a DataFrame, when you need to ignore the index of the column to be added or when you need to overwrite the values of an existing columns.
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)]
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".
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With