Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/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,我有下面的数据框(dat),其中每一行都由一个人的名字唯一标识 Name Distance Driven Distance From Home John Smith 123 km 115 km Michael Jones 15 km 8 km Eric Stevens 777 miles

我有下面的数据框(dat),其中每一行都由一个人的名字唯一标识

Name               Distance Driven     Distance From Home
John Smith              123 km                   115 km
Michael Jones           15  km                    8  km
Eric Stevens            777 miles                725 miles
Brian McGee             1029 km                  1029 km
Dave Baker              8 miles                   8 miles
我有第二个数据帧(dat2),也是通过名称唯一标识的,它只包括初始数据集中的一部分名称以及一些新名称。但是,每行中的数据(名称和列名除外)不存在

Name               Distance Driven         Distance From Home
John Smith              
Derek Thompson         
Eric Stevens           
Dave Baker              
我希望创建一个新的数据框架,其中包括:

  • 原始数据帧(dat)和第二个数据帧中的观测值
  • 仅在第二个数据集中的观察结果
  • 来自初始数据集的行中的所有数据
  • 因此,我真的只想消除只存在于第一个数据集而不存在于另一个数据集的名称。因此,我希望上面的两个数据帧产生:

    Name               Distance Driven         Distance From Home
    John Smith             120 km                    115 km 
    Derek Thompson        
    Eric Stevens           777 miles                725 miles
    Dave Baker              
    

    我希望这是有道理的。提前感谢。

    您想从
    dplyr
    软件包中执行
    左join()

    library(dplyr)
    dat2 %>% 
      select(Name) %>%
      left_join(dat1)
    
    您的输出将如下所示:

    Name               `Distance Driven`         `Distance From Home`
    John Smith         120 km                    115 km 
    Derek Thompson     NA                        NA   
    Eric Stevens       777 miles                 725 miles
    Dave Baker         NA                        NA
    

    除去
    dat2
    中的空列,然后使用联接。我已经为有关如何在R中进行联接的常见问题解答和有关不同联接类型的更一般常见问题解答标记了重复项(该概念在各种语言中很常见)。我将重新问这个问题,因为我没有包括为我的数据获得有用答案所需的所有数据。我尝试了很多左连接的变体,但它并不能解决我所有的问题。我期待着新的版本。如果您与
    dput()
    共享示例数据,则会更容易提供帮助,因此它是可复制/粘贴的。此问题中共享的数据在列名和值中有空格,这使得导入很困难,
    dat2
    中的空格不明确(它们是缺少值
    NA
    还是空字符串
    或其他?)。使用
    dput()
    将允许我们直接导入您共享的数据,包括所有类和结构信息,并演示其解决方案。使用
    dput(dat1)
    复制/粘贴版本的
    dat1
    ,或者在子集上使用
    dput(dat1[1:10,])
    复制前10行。我刚刚尝试过这个,它在大多数情况下都有效,只是它消除了dat2中的其他有用信息。当我输入问题时,我忽略了一个事实,即在“Name”之后还有一列叫做“State”。当我运行上面的代码时,它消除了当此人在第二个数据集中而不是第一个数据集中时“state”列的所有数据。因此,新数据集中的state列对这些观察结果只表示“NA”。有什么办法可以改善这种情况吗?@rogues77-只需从
    dat2
    中列出您想保留在
    select()
    中的列。实际上我已经尝试过了——当我这样做时,它会消除第一个和第二个数据集中名称的“距离驱动”和“离家距离”信息中的数据。因此,生成的数据集不包括“距离驱动”列和“距离到家”列的任何值。有没有办法把它们包括在内?