R-查找数据帧的特定行,然后将该行中的数据添加到另一个数据帧
我有两个数据帧。1完整的个人数据,包括他们的街道名称和门牌号,但不包括他们的房子大小。还有一个是关于每栋房子的信息,包括街道名称、房屋编号和房屋大小,但不包括居住在那栋房子里的个人数据。我想将尺寸信息作为一个新列添加到第一个数据框中,以便查看每个人的房屋尺寸R-查找数据帧的特定行,然后将该行中的数据添加到另一个数据帧,r,dataframe,R,Dataframe,我有两个数据帧。1完整的个人数据,包括他们的街道名称和门牌号,但不包括他们的房子大小。还有一个是关于每栋房子的信息,包括街道名称、房屋编号和房屋大小,但不包括居住在那栋房子里的个人数据。我想将尺寸信息作为一个新列添加到第一个数据框中,以便查看每个人的房屋尺寸 我有超过200000个人和大约100000所房子,到目前为止,我尝试的方法(为每个人减少第二个数据帧)速度非常慢。这是一种有效的方法吗?谢谢。这是我的建议。根据您在数据中描述的内容,我创建了一个示例数据。但是,请尝试提供下次的样本数据。当您
我有超过200000个人和大约100000所房子,到目前为止,我尝试的方法(为每个人减少第二个数据帧)速度非常慢。这是一种有效的方法吗?谢谢。这是我的建议。根据您在数据中描述的内容,我创建了一个示例数据。但是,请尝试提供下次的样本数据。当您提供示例数据和代码时,您更有可能获得帮助并让人们节省更多时间。您有两个关键变量来合并两个数据帧,即街道名称和房屋编号。在这里,我选择将所有数据点保留在df1中
df1 <- data.frame(person = c("ana", "bob", "cathy", "dan", "ellen"),
street = c("makiki st", "liliha st", "nuuanu ave", "mahalo st", "nehoa st"),
num = c(15, 3, 8, 32, 11),
stringsAsFactors = FALSE)
#person street num
#1 ana makiki st 15
#2 bob liliha st 3
#3 cathy nuuanu ave 8
#4 dan mahalo st 32
#5 ellen nehoa st 11
df2 <- data.frame(size = c("small", "large", "medium"),
street = c("makiki st", "liliha st", "nuuanu ave"),
num = c(15, 3, 8),
stringsAsFactors = FALSE)
# size street num
#1 small makiki st 15
#2 large liliha st 3
#3 medium nuuanu ave 8
library(dplyr)
left_join(df1, df2)
# street num person size
#1 makiki st 15 ana small
#2 liliha st 3 bob large
#3 nuuanu ave 8 cathy medium
#4 mahalo st 32 dan <NA>
#5 nehoa st 11 ellen <NA>
df1使用@jazzurro的例子对于较大数据集的另一个选择是使用data.table
library(data.table)
setkey(setDT(df1), street, num)
setkey(setDT(df2), street, num)
df2[df1]
# size street num person
#1: large liliha st 3 bob
#2: NA mahalo st 32 dan
#3: small makiki st 15 ana
#4: NA nehoa st 11 ellen
#5: medium nuuanu ave 8 cathy
您只需要合并这两个数据帧。需要更具体的建议。