【问题标题】:Merge two character columns from two data frames合并来自两个数据帧的两个字符列
【发布时间】:2016-06-22 14:24:34
【问题描述】:

有人知道如何连接来自两个相似数据框的两个字符列吗?

我有一个数据框,它已经填写了部分字符列,并希望在剩余的空行中添加其他数据框的字符。

我的第一个数据框是这样的:

   > df1 %>% View () 
Source: local data frame [6,249 x 4]

   tripnr shootlat shootlong  area
    (dbl)    (dbl)     (dbl) (chr)
1  199801 50.50000 0.5000000      
2  199801 50.48333 0.4166667      
3  199801 50.45000 0.3500000      
4  199801 50.45000 0.3833333      
5  199801 50.41667 0.3166667      
6  199801 50.46667 0.5000000      
7  199801 50.26667 0.3333333      
8  199801 50.28333 0.2333333      
9  199801 50.35000 0.4500000      
10 199801 50.48333 0.4666667

区域列的最后一位有区域名称。

我的第二个数据框正好相反(它填写了 df1 没有填写的区域名称):

> df2 %>% View () 
Source: local data frame [6,249 x 4]

   tripnr shootlat shootlong  area
    (dbl)    (dbl)     (dbl) (chr)
1  199801 50.50000 0.5000000  VIId
2  199801 50.48333 0.4166667  VIId
3  199801 50.45000 0.3500000  VIId
4  199801 50.45000 0.3833333  VIId
5  199801 50.41667 0.3166667  VIId
6  199801 50.46667 0.5000000  VIId
7  199801 50.26667 0.3333333  VIId
8  199801 50.28333 0.2333333  VIId
9  199801 50.35000 0.4500000  VIId
10 199801 50.48333 0.4666667  VIId

我想要做的是结合两个数据框并拥有完整的区域列表。 我试过 left_join 但这并没有结合两个区域列:

`> df1 %>% 
+   left_join(df2, by=c( "tripnr", "shootlat", "shootlong"))
Source: local data frame [7,017 x 5]

   tripnr shootlat shootlong area.x area.y
    (dbl)    (dbl)     (dbl)  (chr)  (chr)
1  199801 50.50000 0.5000000          VIId
2  199801 50.48333 0.4166667          VIId
3  199801 50.45000 0.3500000          VIId
4  199801 50.45000 0.3833333          VIId
5  199801 50.41667 0.3166667          VIId
6  199801 50.46667 0.5000000          VIId
7  199801 50.26667 0.3333333          VIId
8  199801 50.28333 0.2333333          VIId
9  199801 50.35000 0.4500000          VIId
10 199801 50.48333 0.4666667          VIId`

有没有办法做到这一点?

谢谢一百万!

【问题讨论】:

    标签: r dataframe character left-join dplyr


    【解决方案1】:

    试试这个

    df3 <- merge(df1,df2, all = T) 
    

    【讨论】:

    • 谢谢,但这并没有得到我希望的结果。我也尝试了 tidyr 联合,但这也联合了 NA 值..
    • 可以分享数据集吗?此外,如果tripnr 或shootlat 或shootlong 的列对于合并数据集的每一行应该是相同的,您可以尝试使用sql 进行内连接
    猜你喜欢
    • 2022-11-25
    • 2019-12-01
    • 2021-03-10
    • 2016-08-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-14
    • 1970-01-01
    相关资源
    最近更新 更多