Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R-查找数据帧的特定行,然后将该行中的数据添加到另一个数据帧_R_Dataframe - Fatal编程技术网

R-查找数据帧的特定行,然后将该行中的数据添加到另一个数据帧

R-查找数据帧的特定行,然后将该行中的数据添加到另一个数据帧,r,dataframe,R,Dataframe,我有两个数据帧。1完整的个人数据,包括他们的街道名称和门牌号,但不包括他们的房子大小。还有一个是关于每栋房子的信息,包括街道名称、房屋编号和房屋大小,但不包括居住在那栋房子里的个人数据。我想将尺寸信息作为一个新列添加到第一个数据框中,以便查看每个人的房屋尺寸 我有超过200000个人和大约100000所房子,到目前为止,我尝试的方法(为每个人减少第二个数据帧)速度非常慢。这是一种有效的方法吗?谢谢。这是我的建议。根据您在数据中描述的内容,我创建了一个示例数据。但是,请尝试提供下次的样本数据。当您

我有两个数据帧。1完整的个人数据,包括他们的街道名称和门牌号,但不包括他们的房子大小。还有一个是关于每栋房子的信息,包括街道名称、房屋编号和房屋大小,但不包括居住在那栋房子里的个人数据。我想将尺寸信息作为一个新列添加到第一个数据框中,以便查看每个人的房屋尺寸


我有超过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

您只需要
合并这两个数据帧。需要更具体的建议。