首页 > 解决方案 > 鉴于两者都没有共同的属性并且具有不同的行数,如何将变量从一个数据帧导入到另一个数据帧?

问题描述

我需要帮助。我有一个数据框,比如说,df1有变量

x1,x2,x3,x4,x5 

现在我有另一个数据框,比如说df2,有变量

x6,x7,x8,x9,x10,...,x20 

现在我想包含或附加

x6,x7,x8,x11,x20 

df2df1。请注意,我们没有任何属性df1df2共同点

dfi != dfj  for i != j

df1并且df2没有相同的行数,也没有任何共同的属性。我知道可以使用循环来完成,但我的两个数据集都超过一百万次观察。也在merge()这里append()不起作用,因为没有共同的属性。

str(df2)


'data.frame':   173259 obs. of  308 variables:
 $ Month.Date                                          : Factor w/ 14 levels "1/1/2018","10/1/2017",..: 6 6 6 6 6 6 6 6 6 6 ...
 $ Total.Subscriber.Line.International.Cost            : num  0 0 0 0 0 0 0 0 0 0 ...
 $ Total.Subscriber.Line.LD.Cost                       : num  0.09 0.05 0 0 0 0 0.33 0 0.05 0 ...
 $ Total.Subscriber.Line.Monthly.Margin                : num  -1.1 -1.06 -1 0 -1 -1 -0.36 -1 -1.05 0 ...
 $ Total.Subscriber.Line.Monthly.Revenue               : num  -1 -1 -1 0 -1 -1 0 -1 -1 0 ...
 $ Total.Subscriber.Line.Rate.Plan.MRC.Revenue         : int  -1 -1 -1 0 -1 -1 0 -1 -1 0 ...
 $ Total.Subscriber.Line.Roaming.Revenue               : num  0 0 0 0 0 0 0 0 0 0 ...
 $ Total.Subscriber.Line.Total.Monthly.Cost            : num  0.1 0.06 0 0 0 0 0.36 0 0.05 0 ...
 $ Total.Subscriber.Line.Interconnect.Cost             : num  0.01 0.01 0 0 0 0 0.02 0 0 0 ...
 $ Total.Subscriber.Line.Domestic.Voice.Roaming.Revenue: num  0 0 0 0 0 0 0 0 0 0 ...
 $ Total.Subscriber.Line.Domestic.Voice.Roaming.Cost   : num  0 0 0 0 0 0 0 0 0 0 ...
 $ Total.Subscriber.Line.Domestic.Data.Roaming.Cost    : num  0 0 0 0 0 0 0 0 0 0 ...
 $ Total.Subscriber.Line.Device.Cost                   : num  190 1 1 1 1.01 1 190 190 1 190 ...
 $ Total.Subscriber.Line.Data.Roaming.Revenue          : num  0 0 0 0 0 0 0 0 0 0 ...
 $ Total.Status.Changes.In.Month                       : int  0 0 0 0 0 0 0 0 0 0 ...
 $ Total.Data.Roaming.2G.Cost                          : num  0 0 0 0 0 0 0 0 0 0 ...
 $ Total.Data.Roaming.3G.Cost                          : num  0 0 0 0 0 0 0 0 0 0 ...
 $ Total.Data.Roaming.4G.Cost                          : num  0 0 0 0 0 0 0 0 0 0 ...
 $ Total.Data.Roaming.Wifi.Cost                        : int  0 0 0 0 0 0 0 0 0 0 ...
 $ Total.Device.Changes.In.Month                       : int  0 0 1 0 0 0 1 0 0 1 ...
 $ Total.Price.Plan.Changes.In.Month                   : int  0 0 1 1 0 2 1 0 0 1 ...
 $ Total.Records                                       : int  1 1 1 1 1 1 1 1 1 1 ...
 $ Zip.Plus.4.Code                                     : logi  NA NA NA NA NA NA ...
 $ WIFI.Flag                                           : Factor w/ 2 levels "N","Y": 1 1 1 1 1 1 1 1 1 1 ...
 $ Wednesday.Store.Hours                               : logi  NA NA NA NA NA NA ...
 $ Voice.Data.Description                              : Factor w/ 4 levels "1xVoice Only",..: 2 2 2 2 2 2 2 2 2 2 ...
 $ Voice.Data.Code                                     : int  3 3 3 3 3 3 3 3 3 3 ...
 $ Vendor.Id                                           : logi  NA NA NA NA NA NA ...
 $ Update.Process.Code                                 : logi  NA NA NA NA NA NA ...
 $ Tuesday.Store.Hours                                 : logi  NA NA NA NA NA NA ...
 $ Thursday.Store.Hours                                : logi  NA NA NA NA NA NA ...
 $ Text.Messaging.Flag                                 : Factor w/ 2 levels "N","Y": 1 1 1 1 1 1 1 1 1 1 ...
 $ Tertiary.Roaming.SID                                : int  NA NA NA NA NA NA NA NA NA NA ...
 $ Tertiary.Roaming.SID.Carrier                        : Factor w/ 18 levels "","BLUEGRASS CELLULAR, INC.",..: 1 1 1 1 1 1 1 1 1 1 ...
 $ Tertiary.Roaming.SID.Location.Percent               : num  NA NA NA NA NA NA NA NA NA NA ...
 $ Tertiary.Roaming.SID.Name                           : Factor w/ 248 levels "","ABBEVILLE",..: 1 1 1 1 1 1 1 1 1 1 ...
 $ Tertiary.Roaming.SID.State                          : Factor w/ 50 levels "","AL","AR","AZ",..: 1 1 1 1 1 1 1 1 1 1 ...
 $ Tertiary.Roaming.SID.State.Name                     : Factor w/ 13 levels "","CAN","DEU",..: 1 1 1 1 1 1 1 1 1 1 ...
 $ Tertiary.Onnet.Location.Percent                     : num  NA NA NA NA NA NA NA NA NA NA ...
 $ Tertiary.Onnet.Longitude                            : num  NA NA NA NA NA NA NA NA NA NA ...
 $ Tertiary.Onnet.Site.Name                            : Factor w/ 12084 levels "","AATPMIBE",..: 1 1 1 1 1 1 1 1 1 1 ...
 $ Tertiary.Onnet.State                                : Factor w/ 52 levels "","AK","AL","AR",..: 1 1 1 1 1 1 1 1 1 1 ...
 $ Tertiary.Onnet.Switch.Id                            : int  NA NA NA NA NA NA NA NA NA NA ...
 $ Tertiary.Onnet.Zip                                  : Factor w/ 6798 levels "","1001","100100000",..: 1 1 1 1 1 1 1 1 1 1 ...
 $ Tertiary.Onnet.Latitude                             : num  NA NA NA NA NA NA NA NA NA NA ...
 $ Tertiary.Onnet.City                                 : Factor w/ 3830 levels "","ABERDEEN",..: 1 1 1 1 1 1 1 1 1 1 ...
 $ Tertiary.Onnet.Cell.Id                              : int  NA NA NA NA NA NA NA NA NA NA ...
 $ Territory.Description                               : logi  NA NA NA NA NA NA ...
 $ Technology.Description                              : Factor w/ 7 levels "2G","3G","EVDO REV0",..: 6 6 6 6 6 6 6 6 6 6 ...
 $ Technology.Code                                     : int  13 13 13 13 13 13 13 13 13 13 ...
 $ Sunday.Store.Hours                                  : logi  NA NA NA NA NA NA ...
 $ Sub.Valuation.Cluster                               : int  3 3 3 3 3 3 3 3 3 3 ...
 $ Subscriber.Number                                   : num  1.31e+07 5.34e+07 1.49e+08 2.23e+08 3.28e+08 ...
 $ Subscriber.Count                                    : int  492 496 527 491 501 479 486 608 496 481 ...
 $ Subscriber.Attribute.Device.SKU.Number              : Factor w/ 703 levels "AL2017BASB","AL2017BKBL",..: 194 193 193 195 56 193 194 194 193 194 ...
 $ Subscriber.Attribute.Business                       : int  0 0 0 0 0 0 0 0 0 0 ...
 $ Subscriber.Activity.Customer.System.Code            : Factor w/ 1 level "EW": 1 1 1 1 1 1 1 1 1 1 ...
 $ Store.Type                                          : logi  NA NA NA NA NA NA ...
 $ Sub.Market.Code                                     : logi  NA NA NA NA NA NA ...
 $ Sub.MRC.Cluster                                     : int  0 0 0 0 0 0 0 0 0 0 ...
 $ Subscriber.Activity.BAN.Address.City                : int  0 0 0 0 0 0 0 0 0 0 ...
 $ Subscriber.Activity.BAN.Address.Zip                 : int  0 0 0 0 0 0 0 0 0 0 ...
 $ Subscriber.Activity.Business                        : int  0 0 0 0 0 0 0 0 0 0 ...
 $ Store.Status                                        : logi  NA NA NA NA NA NA ...
 $ Store.Primary.Contact.Phone.Number                  : logi  NA NA NA NA NA NA ...
 $ Store.Primary.Contact.Name                          : logi  NA NA NA NA NA NA ...
 $ Store.Owner                                         : logi  NA NA NA NA NA NA ...
 $ Store.Open.Date                                     : logi  NA NA NA NA NA NA ...
 $ Store.Number                                        : logi  NA NA NA NA NA NA ...
 $ Store.Close.Date                                    : logi  NA NA NA NA NA NA ...
 $ Store.Format                                        : logi  NA NA NA NA NA NA ...
 $ Store.Location.Code                                 : logi  NA NA NA NA NA NA ...
 $ Store.Location.Name                                 : logi  NA NA NA NA NA NA ...
 $ Store.Manager                                       : logi  NA NA NA NA NA NA ...
 $ Store.Manager.Private.Phone.Number                  : logi  NA NA NA NA NA NA ...
 $ Store.Name                                          : logi  NA NA NA NA NA NA ...
 $ Sprint.Store.Zip.Code                               : logi  NA NA NA NA NA NA ...
 $ Sprint.TV.Capable.Flag                              : Factor w/ 2 levels "N","Y": 1 1 1 1 1 1 1 1 1 1 ...
 $ Square.Footage.Quantity                             : logi  NA NA NA NA NA NA ...
 $ Standard.Monthly.Recurring.Charge.Amount            : Factor w/ 2 levels "$0.00 ","($1.00)": 2 2 2 1 2 2 1 2 2 1 ...
 $ Status.Name                                         : logi  NA NA NA NA NA NA ...
 $ Sprint.Store.State.Code                             : logi  NA NA NA NA NA NA ...
 $ Sprint.Store.Longitude.Number                       : logi  NA NA NA NA NA NA ...
 $ Sprint.Store.Latitude.Number                        : logi  NA NA NA NA NA NA ...
 $ Sprint.Store.City.Name                              : logi  NA NA NA NA NA NA ...
 $ Sprint.Store.Address.Line.1.Text                    : logi  NA NA NA NA NA NA ...
 $ Source.Sequence.Number                              : int  1 1 1 1 1 1 1 1 1 1 ...
 $ Segment                                             : int  53 53 53 53 53 53 53 53 53 53 ...
 $ Secondary.Roaming.SID.State.Name                    : Factor w/ 16 levels "","BRB","CAN",..: 1 1 1 1 1 1 1 1 1 1 ...
 $ Secondary.Roaming.SID.State                         : Factor w/ 53 levels "","AL","AR","AZ",..: 1 1 1 1 1 1 1 1 1 1 ...
 $ Secondary.Roaming.SID.Name                          : Factor w/ 447 levels "","ABERDEEN",..: 1 1 1 1 1 1 1 1 1 1 ...
 $ Secondary.Roaming.SID.Location.Percent              : num  NA NA NA NA NA NA NA NA NA NA ...
 $ Secondary.Roaming.SID.Carrier                       : Factor w/ 25 levels "","APPALACHIAN WIRELESS",..: 1 1 1 1 1 1 1 1 1 1 ...
 $ Secondary.Roaming.SID                               : int  NA NA NA NA NA NA NA NA NA NA ...
 $ Secondary.Onnet.Zip                                 : Factor w/ 5717 levels "","10003","1001",..: 1 1 1 1 1 1 1 1 1 1 ...
 $ Secondary.Onnet.Switch.Id                           : int  NA NA NA NA NA NA NA NA NA NA ...
 $ Secondary.Onnet.State                               : Factor w/ 48 levels "","AL","AR","AZ",..: 1 1 1 1 1 1 1 1 1 1 ...
 $ Secondary.Onnet.Site.Name                           : Factor w/ 9641 levels "","ABDLFLAT",..: 1 1 1 1 1 1 1 1 1 1 ...
 $ Secondary.Onnet.Cell.Id                             : int  NA NA NA NA NA NA NA NA NA NA ...

我对 df1 有以下内容:

 'data.frame':  387850 obs. of  106 variables:
 $ X.NAME.                                : num  0 0 0 0 0 0 0 0 0 0 ...
 $ X..Calls.Completed                     : num  0 0 0 0 0 0 0 0 0 0 ...
 $ Account.Attribute.BAN.Address.State    : int  0 0 0 0 0 0 0 0 0 0 ...
 $ Account.Code.Sub.Type                  : logi  TRUE TRUE TRUE TRUE TRUE TRUE ...
 $ Account.Code.Type                      : Factor w/ 1 level "R": 1 1 1 1 1 1 1 1 1 1 ...
 $ Account.End.Date                       : Factor w/ 1 level "12/31/2999": 1 1 1 1 1 1 1 1 1 1 ...
 $ Account.Start.Date                     : Factor w/ 73 levels "1/11/2018","1/2/2017",..: 47 47 47 47 47 47 47 47 47 47 ...
 $ Account.Tenure.Days                    : int  361078 361078 361078 361078 361078 361078 361078 361078 361078 361078 ...
 $ Account.Tenure.Months                  : int  11863 11863 11863 11863 11863 11863 11863 11863 11863 11863 ...
 $ Account.Tenure.Years                   : int  989 989 989 989 989 989 989 989 989 989 ...
 $ Answered                               : int  0 0 0 0 0 0 0 0 0 0 ...
 $ Brand.Name                             : Factor w/ 9 levels "Apple","Assurance",..: 1 1 1 1 6 7 7 7 7 7 ...
 $ Business                               : int  0 0 0 0 0 0 0 0 0 0 ...
 $ Busy                                   : int  0 0 0 0 0 0 0 0 0 0 ...
 $ BYOD.Indicator                         : Factor w/ 3 levels "","N","Y": 2 2 2 2 2 2 2 2 2 2 ...
 $ Call.Attempts                          : int  1 1 1 4 2 1 1 1 1 1 ...
 $ Call.Forwarded.Calls                   : int  3 16 0 2 1 1 3 3 12 12 ...
 $ Churn.Flag                             : Factor w/ 3 levels "","N","Y": 2 2 3 2 2 2 2 2 2 2 ...
 $ Consecutive.Calls                      : int  0 0 0 0 0 0 0 0 0 0 ...
 $ Count.Subscriber.Activation            : int  25 1 1 1 32 25 1 1 27 27 ...
 $ Count.Subscriber.Deactivation          : int  33 19 24 24 33 33 19 19 21 21 ...
 $ Credit.Class.Category                  : Factor w/ 1 level "SUB-PRIME": 1 1 1 1 1 1 1 1 1 1 ...
 $ Device                                 : Factor w/ 18 levels "","Alcatel","Apple",..: 3 3 3 3 14 9 7 10 14 14 ...
 $ Device.Color.Name                      : Factor w/ 23 levels "Berry","Black",..: 17 7 17 2 22 2 15 3 2 17 ...
 $ Device.Description                     : Factor w/ 1693 levels "ALCATEL 2017B FLIP",..: 807 780 894 569 1240 1014 536 1042 442 1462 ...
 $ Device.Model.Type.Name                 : Factor w/ 620 levels "Assurance Kyocera Forte",..: 243 245 251 225 417 281 208 320 441 466 ...
 $ Device.Type.Name                       : Factor w/ 4 levels "Handset","N/A",..: 3 3 3 3 1 1 3 1 3 3 ...
 $ Handset.Change.Flag                    : Factor w/ 2 levels "N","Y": 1 1 1 1 1 1 1 1 1 1 ...
 $ Last.Device.Change.Date                : Factor w/ 1658 levels "","1/1/2015",..: 1 1 85 1 1 1 1 1 194 1 ...
 $ Last.Price.Plan.Change.Date            : Factor w/ 1203 levels "","1/1/2015",..: 1 1 62 1 234 1 632 820 249 1127 ...
 $ Liability.Code                         : Factor w/ 1 level "CL": 1 1 1 1 1 1 1 1 1 1 ...
 $ Line.End.Date                          : Factor w/ 567 levels "1/1/2018","1/10/2016",..: 145 145 292 145 145 156 145 145 145 145 ...
 $ Line.Start.Date                        : Factor w/ 2318 levels "1/1/2016","1/1/2017",..: 154 873 1218 913 193 799 906 1525 636 1645 ...
 $ Line.Tenure.In.Days                    : int  1 37 14 61 2183 0 32 2156 1533 1346 ...
 $ Line.Tenure.In.Months                  : int  0 1 0 2 72 0 1 71 50 44 ...
 $ Line.Tenure.In.Years                   : int  0 0 0 0 5 0 0 5 4 3 ...
 $ Manufacturer.Name                      : Factor w/ 17 levels "Alcatel","Apple",..: 2 2 2 2 13 8 6 9 13 13 ...
 $ Market.Name                            : Factor w/ 98 levels "Alabama","Albuquerque",..: 37 31 20 63 6 56 6 66 72 94 ...
 $ Mobile.Orig.Calls                      : int  1 1 1 4 2 1 1 1 1 1 ...
 $ Mobile.Orig.Consecutive.Calls          : int  0 0 0 0 0 0 0 0 0 0 ...
 $ Mobile.Orig.MOU                        : num  0 0 0 0 0 0 0 0 0 0 ...
 $ Mobile.Orig.Sequential.Calls           : int  0 0 0 0 0 0 0 0 0 0 ...
 $ Mobile.Term.Calls                      : int  3 3 1 0 0 1 0 3 0 1 ...
 $ Mobile.Term.Consecutive.Calls          : int  0 0 0 0 0 0 0 0 0 0 ...
 $ Mobile.Term.MOU                        : num  3.82 3.35 0 0 0 1.22 0 0.33 0 0.17 ...
 $ Mobile.Term.Sequential.Calls           : int  0 0 0 0 0 0 0 0 0 0 ...
 $ Month.Date                             : Factor w/ 14 levels "1/1/2018","10/1/2017",..: 1 7 9 9 4 1 7 7 5 5 ...
 $ Months.on.Device                       : int  0 1 3 2 72 0 1 71 16 44 ...
 $ Months.on.Price.Plan                   : int  0 1 3 2 14 0 1 35 16 5 ...
 $ Month.Year                             : int  2018 2018 2018 2018 2017 2018 2018 2018 2018 2018 ...
 $ MSRP.Amount                            : num  600 550 450 450 145 ...
 $ Owner.Owner.Description                : Factor w/ 1 level "ACN_INC": 1 1 1 1 1 1 1 1 1 1 ...
 $ Ported.in.Carrier                      : Factor w/ 2 levels "","SPRINT SPECTRUM LP": 1 1 1 1 1 1 1 1 1 1 ...
 $ Ported.out.Carrier                     : Factor w/ 12 levels "","BANDWIDTH.COM CLEC",..: 1 1 1 1 1 1 1 1 1 1 ...
 $ Prepaid.Postpaid.Subscriber            : int  0 0 0 0 0 0 0 0 0 0 ...
 $ Prepaid.Vs.Poastpaid                   : Factor w/ 1 level "POSTPAID": 1 1 1 1 1 1 1 1 1 1 ...
 $ Price.Plan.Change.Flag                 : Factor w/ 2 levels "N","Y": 1 1 1 1 1 1 2 1 1 1 ...
 $ Primary.Onnet.Cell.Id                  : int  0 0 0 66 19 0 0 4008 0 0 ...
 $ Primary.Onnet.City                     : Factor w/ 3697 levels "","ABBOTT","ABERDEEN",..: 1 1 1 2000 142 1 1 3574 1 1 ...
 $ Primary.Onnet.Latitude                 : num  0 0 0 33.4 39.2 ...
 $ Primary.Onnet.Location.Percent         : num  50 20.9 0 0 0 ...
 $ Primary.Onnet.Longitude                : num  0 0 0 -111.9 -76.6 ...
 $ Primary.Onnet.Site.Name                : Factor w/ 10912 levels "","AATSMIAB",..: 1 1 1 5462 691 1 1 476 1 1 ...
 $ Primary.Onnet.State                    : Factor w/ 49 levels "","AL","AR","AZ",..: 1 1 1 4 20 1 1 34 1 1 ...
 $ Primary.Onnet.Switch.Id                : int  40 423 75 183 161 29 161 426 43 203 ...
 $ Primary.Onnet.Zip                      : Factor w/ 6386 levels "","10003","1001",..: 1 1 1 5087 780 1 1 2479 1 1 ...
 $ Primary.Roaming.Location.Percent       : num  0 0 0 0 0 0 0 0 0 0 ...
 $ Primary.Roaming.SID                    : int  0 0 0 0 0 0 0 0 0 0 ...
 $ Primary.Roaming.SID.Carrier            : Factor w/ 29 levels "","ALASKA WIRELESS NETWORK - ACDMA",..: 1 1 1 1 1 1 1 1 1 1 ...
 $ Primary.Roaming.SID.Name               : Factor w/ 724 levels "","ABBEVILLE",..: 1 1 1 1 1 1 1 1 1 1 ...
 $ Primary.Roaming.SID.State              : Factor w/ 57 levels "","AK","AL","AR",..: 1 1 1 1 1 1 1 1 1 1 ...
 $ Primary.Roaming.SID.State.Name         : Factor w/ 24 levels "","AUS","AUT",..: 1 1 1 1 1 1 1 1 1 1 ...
 $ Ring.No.Answer                         : int  0 0 0 0 0 0 0 0 0 0 ...
 $ Roaming.Data.Limit                     : Factor w/ 2 levels "100MB","300MB": 2 2 1 2 1 2 1 1 1 1 ...
 $ Roaming.Data.Limit.Exceeded.Code       : Factor w/ 2 levels "N","Y": 1 1 1 1 1 1 1 1 1 1 ...
 $ Roaming.Voice.Limit                    : Factor w/ 1 level "800MOU": 1 1 1 1 1 1 1 1 1 1 ...
 $ Roaming.Voice.Limit.Exceeded.Code      : Factor w/ 2 levels "N","Y": 1 1 1 1 1 1 1 1 1 1 ...
 $ Sequential.Calls                       : int  0 0 0 0 0 0 0 0 0 0 ...
 $ Status.Code                            : Factor w/ 4 levels "A","C","F","S": 1 1 2 1 1 1 1 1 1 1 ...
 $ Status.Code.by.MDN                     : Factor w/ 4 levels "A","C","F","S": 1 1 2 1 1 1 1 1 1 1 ...
 $ Status.Same.All.Month.By.Account.Number: Factor w/ 2 levels "No","Yes": 1 1 1 1 1 1 1 1 1 1 ...
 $ Subscriber.Activity.BAN.Address.State  : int  0 0 0 0 0 0 0 0 0 0 ...
 $ Subscriber.Activity.Contract.Status    : int  3 3 3 3 3 3 3 3 3 3 ...
 $ Subscriber.Activity.Price.Plan.Code    : Factor w/ 19 levels "ACNPLAN1","ACNPLAN10",..: 16 14 14 13 19 13 14 19 6 3 ...
 $ Subscriber.Attribute.Contract.Status   : Factor w/ 1 level "Y": 1 1 1 1 1 1 1 1 1 1 ...
 $ Subscriber.Attribute.Owner.Description : Factor w/ 1 level "ACN_INC": 1 1 1 1 1 1 1 1 1 1 ...
 $ Subscriber.Attribute.Price.Plan.Code   : Factor w/ 19 levels "ACNPLAN1","ACNPLAN10",..: 16 14 14 13 19 13 14 19 6 3 ...
 $ Subscriber.Line.Id                     : num  3.68e+09 3.76e+09 2.70e+09 3.73e+09 1.91e+08 ...
 $ Subscriber.Line.Status.Changed         : Factor w/ 2 levels "N","Y": 1 1 1 1 1 1 1 1 1 1 ...
 $ Subscriber.Type                        : Factor w/ 1 level "MVNO": 1 1 1 1 1 1 1 1 1 1 ...
 $ Total.Calls                            : int  4 4 2 4 2 2 1 4 1 2 ...
 $ Total.MOU                              : num  3.82 3.35 0 0 0 1.22 0 0.33 0 0.17 ...
 $ Unassigned                             : int  0 0 0 0 0 0 0 0 0 0 ...
 $ Total.Active.Accounts                  : int  1 1 1 1 1 1 1 1 1 1 ...
 $ Total.Active.Subscribers               : int  1 1 1 1 1 1 1 1 1 1 ...
 $ Total.Data.Roaming.2G.MB               : int  0 0 0 0 0 0 0 0 0 0 ...
 $ Total.Data.Roaming.3G.MB               : int  0 0 0 0 0 0 0 0 0 0 ...
 $ Total.Data.Roaming.4G.MB               : int  0 0 0 0 0 0 0 0 0 0 ...
 $ Total.Data.Roaming.MB                  : int  0 0 0 0 0 0 0 0 0 0 ...

现在我想保留 df1 的所有变量并添加

Wifi.flag ,  Standard.Monthly.Recurring.Charge.Amount, 
Sprint.TV.Capable.Flag , Total.Price.Changes.In.Month , 
Total.Device.Changes.In.Month , 
Total.Subscriber.Line.Device.Cost,  Text.Messaging.Flag,Subscriber.Count(?=> 
How is it different from Total.Subscriber.Activation- 
Total.Subscriber.Deactivation?),   Sprint.TV.Capable.Flag,  Revenue.Non- 
Revenue,  Ready.Now.Code,  Quality.Description,  Push.Talk.Flag,  
NFC.Indicator,  Multimedia.Flag,  MP3.Flag  ,  Hot-Spot.Capable.Description  
,  GSM.Capable  ,  GPS.Flag  ,  Device.Rugged.Flag  ,  
Device.Operating.System.Name  ,Device.Cost.Amount, Device.Network.Flag,  
Device.System.Status.Code ,  Credit.Class.System.Status.Code  ,  
Credit.Class.Network.Flag  ,  CPO.Indicator  ,  Churn.Risk.Cluster  ,
Channel.Hierarchy.System.Status.Code  ,  Carrier.Aggregation,Camera.Flag,
Business.Geography.System.Status.Code  ,  Affiliate.Subscription.Flag  ,  
Account.Spending.Limit.Code

df2 到 df1 的变量保持 df1 的所有属性不变。

标签: r

解决方案


如果这两个数据集没有任何共同点,我认为将它们结合起来是有问题的,但你肯定有你的理由。

一种选择是使用 bind_rows from dplyr,这将保留这样一个事实,即行之间没有连接:

library(dplyr)
bind_rows(sample_df1, sample_df2[, c("x4", "x7")])

#    x1 x2   x3 x4   x7
#  1  1  6    a NA <NA>
#  2  2  7    b NA <NA>
#  3  3  8    c NA <NA>
#  4 NA NA <NA> 11    K
#  5 NA NA <NA> 12    L
#  6 NA NA <NA> 13    M
#  7 NA NA <NA> 14    N
#  8 NA NA <NA> 15    O

另一种选择是首先组合相同数量的行,然后从较大的数据框中添加剩余的行:

bind_cols(sample_df1, sample_df2[1:length(sample_df1), ]) %>% 
  bind_rows(sample_df2[-c(1:length(sample_df1)), ])

#   x1 x2   x3 x4 x7
# 1  1  6    a 11  K
# 2  2  7    b 12  L
# 3  3  8    c 13  M
# 4 NA NA <NA> 14  N
# 5 NA NA <NA> 15  O

但是这种方式取决于数据的顺序。

数据

sample_df1 <- 
  data.frame(x1 = 1:3, 
             x2 = 6:8, 
             x3 = letters[1:3], 
             stringsAsFactors = F)


sample_df2 <- 
  data.frame(x4 = 11:15, 
             x5 = 16:20, 
             x6 = letters[11:15], 
             x7 = LETTERS[11:15],
             stringsAsFactors = F)

推荐阅读