小编krh*_*hlk的帖子

为什么as.Date在字符向量上变慢?

我开始在R中使用data.table包来提高代码的性能.我使用以下代码:

sp500 <- read.csv('../rawdata/GMTSP.csv')
days <- c("Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday")

# Using data.table to get the things much much faster
sp500 <- data.table(sp500, key="Date")
sp500 <- sp500[,Date:=as.Date(Date, "%m/%d/%Y")]
sp500 <- sp500[,Weekday:=factor(weekdays(sp500[,Date]), levels=days, ordered=T)]
sp500 <- sp500[,Year:=(as.POSIXlt(Date)$year+1900)]
sp500 <- sp500[,Month:=(as.POSIXlt(Date)$mon+1)]
Run Code Online (Sandbox Code Playgroud)

我注意到as.Date函数完成的转换非常慢,与其他创建工作日的函数相比,等等.为什么会这样?是否有更好/更快的解决方案,如何转换为日期格式?(如果你问我是否真的需要日期格式,可能是的,因为然后使用ggplot2制作情节,这就像这种类型数据的魅力一样.)

更确切地说

> system.time(sp500 <- sp500[,Date:=as.Date(Date, "%m/%d/%Y")])
   user  system elapsed 
 92.603   0.289  93.014 
> system.time(sp500 <- sp500[,Weekday:=factor(weekdays(sp500[,Date]), levels=days, ordered=T)])
   user  system elapsed 
  1.938   0.062   2.001 
> system.time(sp500 <- sp500[,Year:=(as.POSIXlt(Date)$year+1900)])
   user  system elapsed 
  0.304   0.001   0.305 
Run Code Online (Sandbox Code Playgroud)

在MacAir i5上,观测值略低于3000000.

谢谢

r data.table

27
推荐指数
4
解决办法
5575
查看次数

获取(密钥)时出错:R_decompress1中的内部错误-3

我有以下问题:

  1. 我在R会话中加载了我的包的一些开发版本

  2. 我编辑了源文件.

  3. 我分开并做:

    system("R CMD check realizedvolatility")
    system("R CMD build realizedvolatility")
    system("R CMD install realizedvolatility_0.1.tar.gz")
    library(realizedvolatility)
    
    Run Code Online (Sandbox Code Playgroud)
  4. 到现在为止,一切正常.现在,如果我尝试调出帮助文件,例如?realizedvolatility,错误

    Error in fetch(key) : internal error -3 in R_decompress1
    
    Run Code Online (Sandbox Code Playgroud)

发生.

补救措施是完全重新启动R会话,然后一切正常.有没有办法让它在一个会话中工作?我尝试从命名空间中分离,使用各种选项进行安装,没有任何效果.

我使用的是Mac OS X Lion和R 2.14.1

r

15
推荐指数
1
解决办法
3689
查看次数

从URL读取数据

是否有一种从一些网址获取数据的相当简单的方法?我试过最明显的版本,不起作用:

readcsv("https://dl.dropboxusercontent.com/u/.../testdata.csv")
Run Code Online (Sandbox Code Playgroud)

我没有找到任何可用的参考.有帮助吗?

julia

13
推荐指数
3
解决办法
4037
查看次数

用fread()读取带有row.names的CSV

我遇到了包中的fread()函数问题data.table.我知道它仍然是实验性的,但也许我在某处犯了一些错误.

这是可重复的例子:

library(data.table)
test <- data.frame(a=rnorm(300), b=rnorm(300))
write.csv(test,"a.csv")
fread("a.csv")
Run Code Online (Sandbox Code Playgroud)

给出错误:

Error in rbindlist(allargs) : 
  Item 2 has 2 columns, inconsistent with item 1 which has 3 columns
Run Code Online (Sandbox Code Playgroud)

和侧面的问题:我为什么要永远离开row.names=TRUEwrite.csv问题吗?到目前为止,我只遇到了问题,因为它为数据添加了一个未命名的列.

谢谢.

r data.table

9
推荐指数
1
解决办法
2万
查看次数

使用`fread`解释#N/A错误

我正在使用data.table fread()函数来读取一些缺少值的数据并且它们是在Excel中生成的,因此缺失值字符串是"#N/A".但是,当我使用该na.strings命令str时,读取数据的最终仍然是字符.要复制它,这里是代码和数据.

数据:

Date,a,b,c,d,e,f,g
1/1/03,#N/A,0.384650146,0.992190069,0.203057232,0.636296656,0.271766148,0.347567706
1/2/03,#N/A,0.461486974,0.500702057,0.234400718,0.072789936,0.060900352,0.876749487
1/3/03,#N/A,0.573541006,0.478062582,0.840918789,0.061495666,0.64301024,0.939575302
1/4/03,#N/A,#N/A,#N/A,#N/A,#N/A,#N/A,#N/A
1/5/03,#N/A,#N/A,#N/A,#N/A,#N/A,#N/A,#N/A
1/6/03,#N/A,0.66678429,0.897482818,0.569609033,0.524295691,0.132941158,0.194114347
1/7/03,#N/A,0.576835985,0.982816576,0.605408973,0.093177815,0.902145012,0.291035649
1/8/03,#N/A,0.100952961,0.205491093,0.376410642,0.775917986,0.882827749,0.560508499
1/9/03,#N/A,0.350174456,0.290225065,0.428637309,0.022947911,0.7422805,0.354776101
1/10/03,#N/A,0.834345466,0.935128099,0.163158666,0.301310627,0.273928596,0.537167776
1/11/03,#N/A,#N/A,#N/A,#N/A,#N/A,#N/A,#N/A
1/12/03,#N/A,#N/A,#N/A,#N/A,#N/A,#N/A,#N/A
1/13/03,#N/A,0.325914633,0.68192633,0.320222677,0.249631582,0.605508964,0.739263677
1/14/03,#N/A,0.715104989,0.639040211,0.004186366,0.351412982,0.243570606,0.098312443
1/15/03,#N/A,0.750380716,0.264929325,0.782035411,0.963814327,0.93646428,0.453694758
1/16/03,#N/A,0.282389354,0.762102103,0.515151803,0.194083842,0.102386764,0.569730516
1/17/03,#N/A,0.367802161,0.906878948,0.848538256,0.538705673,0.707436236,0.186222899
1/18/03,#N/A,#N/A,#N/A,#N/A,#N/A,#N/A,#N/A
1/19/03,#N/A,#N/A,#N/A,#N/A,#N/A,#N/A,#N/A
1/20/03,#N/A,0.79933188,0.214688799,0.37011313,0.189503843,0.294051763,0.503147404
1/21/03,#N/A,0.620066341,0.329949446,0.123685075,0.69027192,0.060178071,0.599825005
Run Code Online (Sandbox Code Playgroud)

(保存在temp.csv中的数据)代码:

library(data.table)
a <- fread("temp.csv", na.strings="#N/A")
Run Code Online (Sandbox Code Playgroud)

给(我有更大的数据集,所以忽略观察的数量):

Classes ‘data.table’ and 'data.frame':  144 obs. of  8 variables:
 $ Date: chr  "1/1/03" "1/2/03" "1/3/03" "1/4/03" ...
 $ a   : chr  NA NA NA NA ...
 $ b   : chr  "0.384650146" "0.461486974" "0.573541006" NA ...
 $ c   : chr  "0.992190069" "0.500702057" "0.478062582" …
Run Code Online (Sandbox Code Playgroud)

r data.table

9
推荐指数
1
解决办法
2826
查看次数

删除data.table中的范围

我试图从数据表中排除一些行,比如天数和月份 - 不包括例如暑假,这些行总是从6月15日开始到下个月15日结束.我可以根据Date提取那些日子,但是as.Date函数运行速度非常慢,我有月和日的单独整数列,我想只使用它们.

通过选择给定的条目很容易

DT[Month==6][Day>=15]
DT[Month==7][Day<=15]
Run Code Online (Sandbox Code Playgroud)

有没有办法如何使两者data.tables(原始的和我选择的)"差异" .(为什么不是子集?也许我错过了一些简单的东西,但我不想排除像10/6,31/7这样的日子.)

我知道有一种方法可以通过加入来实现,但只是日复一日

setkey(DT, Month, Day)
DT[-DT[J(Month,Day), which= TRUE]]
Run Code Online (Sandbox Code Playgroud)

任何人都可以帮助如何以更一般的方式解决它?

r data.table

8
推荐指数
1
解决办法
1618
查看次数

将矢量输出转换为data.table中的列?

我通过将函数应用于data.table的某些子集来生成输出.我正在使用这样的函数:

data[, foo(args), by=list(Year, Month)]
Run Code Online (Sandbox Code Playgroud)

我的函数foo总是返回一个长度向量n.我得到这样的输出:

      Year Month           V1
   1: 1983     2 9.734669e-06
   2: 1983     2 9.165665e-06
   3: 1983     2 2.097477e-05
   4: 1983     2 3.803727e-05
Run Code Online (Sandbox Code Playgroud)

但我想要像

      Year Month           V1           V2           V3           V4 ...
   1: 1983     2 9.734669e-06 9.165665e-06 2.097477e-05 3.803727e-05 ...
Run Code Online (Sandbox Code Playgroud)

我甚至尝试过使用list(foo(args)),但没有帮助.或者输出应该是什么形式foo$V1, foo$V2 ...

r data.table

5
推荐指数
1
解决办法
831
查看次数

朱莉娅有外部地图功能吗?

我正在尝试构造四个向量的所有可能组合(模型中的参数),这将给我一个大的nx4矩阵,然后可以对每组参数(行)进行仿真。在RI中,可以通过使用expand.gridMathematica样式来实现此目的,我可以使用外部乘积之类的东西,vcat并使用减少输出hcat

是否有expand.grid来自R或外部映射函数的某些函数类似物?

玩具示例:

A = [1 2]
B = [3 4]

some magic

output = [1 3, 1 4, 2 3, 2 4]
Run Code Online (Sandbox Code Playgroud)

julia

5
推荐指数
1
解决办法
901
查看次数

R中数据库的指针式变量

有没有办法如何在R中创建类似data.frame对象的东西,它指向MySQL数据库中的特定表,并且表现得像data.frame?我没有找到任何关于它的提及.

作为一个例子,让我们说,我有一个名为客户和列名称,高度,权重的表,我想要一些功能,这将创建可变客户,我可以像data.frame一样访问各自的列,即客户$高度等

我的问题是我正在处理非常大的数据集,并且在数据库上操作要快得多,并且实际上可能会破解SQL中的一些描述性统计信息以用于这样的指针变量,例如sum,average等...

谢谢你的回答.T.

mysql sql r

2
推荐指数
1
解决办法
178
查看次数

性能改善

我试图获得基于滞后/转发的功能应用程序.我广泛使用data.table,我甚至有工作代码,但data.table我知道必须有一个更简单的方法来实现相同的可能提高性能(我在函数内部做了很多变量).下面是工作的功能代码(可在https://gist.github.com/tomaskrehlik/5262087#file-gistfile1-r获得)

# Lag-function lags the given variable by the date_variable

lag_variable <- function(data, variable, lags, date_variable = c("Date")) {
    if (lags == 0) {
      return(data)
    }
    if (lags>0) {
      name <- "lag"
    } else {
      name <- "forward"
    }
    require(data.table)
    setkeyv(data, date_variable)
    if (lags>0) {
      data[,index:=seq(1:.N)]  
    } else {
      data[,index:=rev(seq(1:.N))]
    }
    setkeyv(data, "index")
    lags <- abs(lags)
    position <- which(names(data)==variable)
    for ( j in 1:lags ) {
      lagname <- paste(variable,"_",name,j,sep="")
      lag <- paste("data[, ",lagname,":=data[list(index-",j,"), ",variable,", …
Run Code Online (Sandbox Code Playgroud)

r data.table

2
推荐指数
1
解决办法
152
查看次数

write.csv:charToDate(x)中的错误:字符串不是标准的明确格式

我正在尝试data.table使用以下结构写入光盘a :

Classes ‘data.table’ and 'data.frame':  408776 obs. of  13 variables:
 $ date     : IDate, format: "2013-02-01" "2013-02-01" "2013-02-01" "2013-02-01" ...
 $ hour     : int  1 1 1 1 1 1 2 2 2 2 ...
 $ time     :Class 'ITime'  int [1:408776] 16 186 218 229 463 474 16 186 208 218 ...
 $ bids_med : num  NA NA NA 2.1 2.1 4.6 NA 7.5 7.5 7.5 ...
 $ bids_n   : int  NA NA NA 2 2 2 …

r data.table

2
推荐指数
1
解决办法
1685
查看次数

R中带连字符的字符串

我在R中有一个字符串(使用RStudio)

legend <- c('Up to 5 minutes', '5-10 minutes', '10–20 minutes', '20–40 minutes', '40–80 minutes', '80-160 minutes', '160-320 minutes', '5.3-10.6 hours', '10.6-21.2 hours', '1-2 days')
Run Code Online (Sandbox Code Playgroud)

当我只是逐行运行源代码时运行正常.但是当我获取代码时,它会抛出一个错误

Error in source(con, echo = echo, print.eval = print.eval, max.deparse.length = max.deparse.length,  : 
  con:29:52: unexpected INCOMPLETE_STRING
Run Code Online (Sandbox Code Playgroud)

哪里可能是问题?

r rstudio

0
推荐指数
1
解决办法
1638
查看次数

标签 统计

r ×10

data.table ×7

julia ×2

mysql ×1

rstudio ×1

sql ×1