r - 合并数据帧时保留索引

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了r - 合并数据帧时保留索引相关的知识,希望对你有一定的参考价值。

我在R中使用College数据帧。我有以下代码

input.df = College
# Making df.train similar to input.df but with zero rows. 
df.train = input.df[0,]
temp.split = input.df[input.df[,1] == "Yes",]
sample.size = floor(0.75 * nrow(temp.split))
train.ind = sample(seq_len(nrow(temp.split)),size = sample.size)
temp.train = temp.split[train.ind, ]
df.train = merge(x = df.train, y = temp.train, all = TRUE)

合并后我松了索引。

head(input.df)
                             Private Apps Accept Enroll Top10perc Top25perc 
Abilene Christian University     Yes 1660   1232    721        23        52   
Adelphi University               Yes 2186   1924    512        16        29            
Adrian College                   Yes 1428   1097    336        22        50            
Agnes Scott College              Yes  417    349    137        60        89             
Alaska Pacific University        Yes  193    146     55        16        44             
Albertson College                Yes  587    479    158        38        62         

head(temp.train, n = 4)
                            Private  Apps Accept Enroll Top10perc Top25perc 
University of South Florida   No  7589   4676   1876        29        63    
Virginia Tech                 No 15712  11719   4277        29        53     
Valley City State University  No   368    344    212         5        27    
Winthrop University           No  2320   1805    769        24        61    

head(df.train)    
      Private Apps Accept Enroll Top10perc Top25perc F.Undergrad P.Undergrad 
1         No  233    233    153         5        12         658          58     
2         No  285    280    208        21        43        1140         473     
3         No  368    344    212         5        27         863         189     
4         No  434    412    319        10        30        1376         237     
5         No  441    369    172        17        45         633         317     
6         No  480    405    380        19        46        1673        1014     

上面的输出被截断以适合窗口

正如你所看到的那样,“南佛罗里达大学”,“弗吉尼亚理工大学”等在合并之后就会丢失。有没有办法可以保留它们?

答案

不幸的是你不能像那样使用merge(即保持row.names)。

请注意,例如dplyr::left_join()实际上会遇到同样的问题。

我担心你必须在row.names期间暂时包括merge,例如:

df.train = transform(merge(
  x = df.train,
  y = cbind(rownames = rownames(temp.train), temp.train),
  all = TRUE
), row.names = rownames, rownames = NULL)

以上是关于r - 合并数据帧时保留索引的主要内容,如果未能解决你的问题,请参考以下文章

在 R 中合并多个数据帧时如何使用 suffixes 参数?

在 pandas 中加入数据帧时的内存问题(时间索引)

合并具有不同索引的两个数据帧,同时使用一行代码保留主数据帧的索引

当我合并两个数据帧时,如何防止 Pandas 将我的整数转换为浮点数?

TypeError: unhashable type: 'numpy.ndarray' 合并来自 BigQuery 的 pandas 数据帧时

在单个多核机器上索引大型 dask 数据帧时的内存使用情况