我所使用的大部分数据集一般都是中等大小(大多数少于100k行),因此我的代码执行时间对我来说通常不是那么大的问题。减少计算时间
但是我最近试图编写一个函数,它将2个数据帧作为参数(例如,使用n行),并返回一个包含m * n行的新数据帧。然后我必须对结果数据集执行一些操作。因此,即使在小数值的情况下(比如每个数值大约为1000),所得到的数据帧也会有超过一百万行。
当我尝试对这个数据集进行简单的操作时,代码需要很长的时间才能运行。具体来说,我的结果数据框有2列与数值,我需要添加一个新的列,将比较这些列的值,并将它们分类为 - “大于”,“小于”,“绑”
我现在用下面的代码:
df %>% mutate(compare=ifelse(var1==var2,"tied",
ifelse(var1>var2,"Greater than","lesser then")
而且,正如我前面提到的,这需要永远运行。我对此做了一些研究,我发现显然data.table上的操作比dataframe快得多,所以也许这是我可以尝试的一种选择。
但我从来没有使用过data.tables。因此,在我深入研究之前,我很想知道是否有其他方法可以加快大型数据集的计算时间。
您认为我可以尝试其他的选择吗?
谢谢!
使用'sign'在这种情况下:'比较= C( “捆绑” “比更小的”, “大于”)号(VAR1,VAR2)+2]' – nicola
已经有非常大的合作R中的数据集(高达1500万行),只需咬紧牙关即可切换到data.table。它不仅可以通过正确的向量化代码加速代码10x +,而且我认为语法更容易理解。我放弃了开关,并且感到遗憾,因为我花了很多时间等待我的函数运行大型数据框架。 –