我一直在阅读矢量化功能的重要性,所以希望有人可以帮助我.
假设我有一个包含两列的数据框:名称和ID.现在我还有另一个带有名称和出生地的数据框,但是这个数据框比第一个数据框大得多,并且包含第一个数据框中的一些但不是全部的名称.如何将第三列添加到使用第二个表查找的出生地填充的第一个表中.
我现在拥有的是:
corresponding.birthplaces <- sapply(table1$Name,
function(name){return(table2$Birthplace[table2$Name==name])})
Run Code Online (Sandbox Code Playgroud)
这似乎效率低下.思考?有没有人知道使用R'正确'的好书/资源.我感觉我通常以可计算的最低效计算方式思考.
谢谢 :)
查看?merge哪个将执行数据库链接合并或连接.
这是一个例子:
set.seed(2)
d1 <- data.frame(ID = 1:5, Name = c("Bill","Bob","Jessica","Jennifer","Robyn"))
d2 <- data.frame(Name = c("Bill", "Gavin", "Bob", "Joris", "Jessica", "Andrie",
"Jennifer","Joshua","Robyn","Iterator"),
Birthplace = sample(c("London","New York",
"San Francisco", "Berlin",
"Tokyo", "Paris"), 10, rep = TRUE))
Run Code Online (Sandbox Code Playgroud)
这使:
> d1
ID Name
1 1 Bill
2 2 Bob
3 3 Jessica
4 4 Jennifer
5 5 Robyn
> d2
Name Birthplace
1 Bill New York
2 Gavin Tokyo
3 Bob Berlin
4 Joris New York
5 Jessica Paris
6 Andrie Paris
7 Jennifer London
8 Joshua Paris
9 Robyn San Francisco
10 Iterator Berlin
Run Code Online (Sandbox Code Playgroud)
然后我们merge()用来做连接:
> merge(d1, d2)
Name ID Birthplace
1 Bill 1 New York
2 Bob 2 Berlin
3 Jennifer 4 London
4 Jessica 3 Paris
5 Robyn 5 San Francisco
Run Code Online (Sandbox Code Playgroud)