【问题标题】:rbind loop in R [duplicate]R中的rbind循环[重复]
【发布时间】:2017-08-23 05:13:58
【问题描述】:

我有 200 万行和 7 列的数据。还有数千种不同的公司和指标。

数据样本是:

company_id                                                             indicator_id     X2011
1    1000045                 AccountsPayableAndAccruedLiabilitiesCurrentAndNoncurrent   6612429
2    1000045 AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment        NA
3    1000045                                                AdjustmentForAmortization        NA
4    1000045                                                                   Assets 257236034
5    1000045                                         AssetsHeldForSaleAtCarryingValue   1373001
6    1000045                      AssetsOfDisposalGroupIncludingDiscontinuedOperation        NA
      X2012     X2013     X2014     X2015
1   7405579   8924919   7841070   5839000
2   2111343   2242703   2236449   2462000
3 -11482251 -13490892 -13852305 -13811000
4 263835468 283429579 302528591 325309000
5   1203664   1696330        NA        NA
6        NA        NA   1746887   2148000

我想要的一些指标是:

    asset_indicators
[1] "DeferredIncomeTaxExpenseBenefit"                                         
[2] "CashAndCashEquivalentsAtCarryingValue"                                   
[3] "CashAndCashEquivalentsPeriodIncreaseDecrease"                            
[4] "NetCashProvidedByUsedInOperatingActivities"                              
[5] "NetCashProvidedByUsedInFinancingActivities"                              
[6] "NetCashProvidedByUsedInInvestingActivities"                              
[7] "PropertyPlantAndEquipmentNet"                                            

我正在尝试获取仅包含某些行的新数据框。目前,我有这个代码:

year <-rbind(statement[which(statement$indicator_id==asset_indicators[1]),],
         statement[which(statement$indicator_id==asset_indicators[2]),],
         statement[which(statement$indicator_id==asset_indicators[3]),],
         statement[which(statement$indicator_id==asset_indicators[4]),],
         statement[which(statement$indicator_id==asset_indicators[5]),],
         statement[which(statement$indicator_id==asset_indicators[6]),],
         statement[which(statement$indicator_id==asset_indicators[7]),] )

我想知道是否有办法更有效地做到这一点?我尝试制作一个 for 循环,但它需要几个小时才能运行,而这只需要几秒钟。如果我更改了要使用的指标数量,它会自动更新,那就太好了。

有人知道怎么做吗?

【问题讨论】:

  • statement[statement$indicator_id %in% asset_indicators, ] 应该没问题

标签: r loops rbind large-data


【解决方案1】:

试试%in%:

year <- statement[statement$indicator_id %in% asset_indicators,]

【讨论】:

  • 谢谢!完美的工作
猜你喜欢
  • 2018-05-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-26
  • 2021-08-14
  • 1970-01-01
  • 2021-11-30
相关资源
最近更新 更多