小编Mat*_*wle的帖子

R中字符串到日期转换的"标准明确日期"格式是什么?

请考虑以下事项

$ R --vanilla

> as.Date("01 Jan 2000")
Error in charToDate(x) :
    character string is not in a standard unambiguous format
Run Code Online (Sandbox Code Playgroud)

但是那个日期显然标准的明确格式.为什么出现错误信息?

更糟糕的是,一个模棱两可的日期显然是在没有警告或错误的情况下被接受的,然后读错了!

> as.Date("01/01/2000")
[1] "0001-01-20"
Run Code Online (Sandbox Code Playgroud)

我搜索过并在包含此错误消息的[R]标签中发现了28个其他问题.所有涉及指定格式的解决方案和解决方法,iiuc.这个问题的不同之处在于,我在问无论如何定义标准的明确格式,它们可以改变吗?每个人都得到这些消息还是仅仅是我?也许它与语言环境有关?

换句话说,有没有比需要指定格式更好的解决方案?

包含"[R]标准明确格式"的29个问题

> sessionInfo()
R version 2.15.2 (2012-10-26)
Platform: x86_64-w64-mingw32/x64 (64-bit)

locale:
[1] LC_COLLATE=English_United Kingdom.1252
[2] LC_CTYPE=English_United Kingdom.1252
[3] LC_MONETARY=English_United Kingdom.1252
[4] LC_NUMERIC=C
[5] LC_TIME=English_United Kingdom.1252

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base
Run Code Online (Sandbox Code Playgroud)

r date strptime date-formatting as.date

81
推荐指数
4
解决办法
16万
查看次数

在我自己的包中使用data.table包

我试图在我自己的包中使用data.table包.MWE如下:

我创建了一个函数test.fun,它只是创建一个小的data.table对象,然后将"Val"列分组为"A"列.代码是

test.fun<-function ()
{
    library(data.table)
    testdata<-data.table(A=rep(seq(1,5), 5), Val=rnorm(25))
    setkey(testdata, A)
    res<-testdata[,{list(Ct=length(Val),Total=sum(Val),Avg=mean(Val))},"A"]
    return(res)
}
Run Code Online (Sandbox Code Playgroud)

当我在常规R会话中创建此函数,然后运行该函数时,它按预期工作.

> res<-test.fun()
data.table 1.8.0  For help type: help("data.table")
> res
     A Ct      Total        Avg
[1,] 1  5 -0.5326444 -0.1065289
[2,] 2  5 -4.0832062 -0.8166412
[3,] 3  5  0.9458251  0.1891650
[4,] 4  5  2.0474791  0.4094958
[5,] 5  5  2.3609443  0.4721889
Run Code Online (Sandbox Code Playgroud)

当我将此函数放入包中时,安装包,加载包,然后运行该函数,我收到一条错误消息.

> library(testpackage)
> res<-test.fun()
data.table 1.8.0  For help type: help("data.table")
Error in `[.data.frame`(x, i, j) : object 'Val' not found
Run Code Online (Sandbox Code Playgroud)

任何人都可以向我解释为什么会发生这种情况以及我可以做些什么来解决它.很感谢任何形式的帮助.

r data.table

73
推荐指数
2
解决办法
8368
查看次数

R中的点是什么意思 - 个人偏好,命名约定或更多?

我(可能)不是指"所有其他变量",意思就像var1~.这里一样.我plyr再次指出并调查mlply并想知道为什么参数是用这样的前导点定义的:

function (.data, .fun = NULL, ..., .expand = TRUE, .progress = "none", 
.parallel = FALSE) 
{
if (is.matrix(.data) & !is.list(.data)) 
    .data <- .matrix_to_df(.data)
f <- splat(.fun)
alply(.data = .data, .margins = 1, .fun = f, ..., .expand = .expand, 
    .progress = .progress, .parallel = .parallel)
}
<environment: namespace:plyr>
Run Code Online (Sandbox Code Playgroud)

有什么用?这只是个人偏好,命名惯例还是更多?通常R是如此功能,以至于我错过了以前很久以前完成的技巧.

coding-style r naming-conventions plyr

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

有条件地替换data.frame中的值

我试图了解如何在不使用循环的情况下条件替换数据帧中的值.我的数据框架结构如下:

> df
          a b est
1  11.77000 2   0
2  10.90000 3   0
3  10.32000 2   0
4  10.96000 0   0
5   9.90600 0   0
6  10.70000 0   0
7  11.43000 1   0
8  11.41000 2   0
9  10.48512 4   0
10 11.19000 0   0
Run Code Online (Sandbox Code Playgroud)

dput输出是这样的:

structure(list(a = c(11.77, 10.9, 10.32, 10.96, 9.906, 10.7, 
11.43, 11.41, 10.48512, 11.19), b = c(2, 3, 2, 0, 0, 0, 1, 2, 
4, 0), est = c(0, 0, 0, 0, 0, …
Run Code Online (Sandbox Code Playgroud)

r dataframe

65
推荐指数
5
解决办法
16万
查看次数

这是在熊猫队中分组的最快方式吗?

以下代码运行良好.只是检查:我正在使用和正确计时Pandas并且有更快的方法吗?谢谢.

$ python3
Python 3.4.0 (default, Apr 11 2014, 13:05:11) 
[GCC 4.8.2] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import pandas as pd
>>> import numpy as np
>>> import timeit
>>> pd.__version__
'0.14.1'

def randChar(f, numGrp, N) :
   things = [f%x for x in range(numGrp)]
   return [things[x] for x in np.random.choice(numGrp, N)]

def randFloat(numGrp, N) :
   things = [round(100*np.random.random(),4) for x in range(numGrp)]
   return [things[x] for x in np.random.choice(numGrp, N)]

N=int(1e8)
K=100
DF = …
Run Code Online (Sandbox Code Playgroud)

python performance numpy pandas

46
推荐指数
1
解决办法
2716
查看次数

44
推荐指数
2
解决办法
4259
查看次数

R:加快"分组"操作

我有一个模拟,有一个巨大的聚合,并在中间组合步骤.我使用plyr的ddply()函数对这个过程进行了原型设计,这对我的大部分需求非常有用.但是我需要这个聚合步骤更快,因为我必须运行10K模拟.我已经在并行缩放模拟,但如果这一步更快,我可以大大减少我需要的节点数量.

这是对我要做的事情的合理简化:

library(Hmisc)

# Set up some example data
year <-    sample(1970:2008, 1e6, rep=T)
state <-   sample(1:50, 1e6, rep=T)
group1 <-  sample(1:6, 1e6, rep=T)
group2 <-  sample(1:3, 1e6, rep=T)
myFact <-  rnorm(100, 15, 1e6)
weights <- rnorm(1e6)
myDF <- data.frame(year, state, group1, group2, myFact, weights)

# this is the step I want to make faster
system.time(aggregateDF <- ddply(myDF, c("year", "state", "group1", "group2"),
                     function(df) wtd.mean(df$myFact, weights=df$weights)
                                 )
           )
Run Code Online (Sandbox Code Playgroud)

所有提示或建议表示赞赏!

performance r plyr

36
推荐指数
5
解决办法
8099
查看次数

data.frame方法最有效的列表?

刚刚和同事谈过这个问题,我们认为看看SO土地上的人们不得不说出来是值得的.假设我有一个包含N个元素的列表,其中每个元素都是长度为X的向量.现在假设我想将其转换为data.frame.与R中大多数事情一样,有剥皮众所周知的猫的多种方式,比如as.dataframe,使用plyr包,comboing do.callcbind,预分配的DF和填充它,和其他人.

提出的问题是当N或X(在我们的例子中是X)变得非常大时会发生什么.当效率(特别是在记忆方面)至关重要时,是否有一种猫皮肤方法显着优越?

performance memory-management r dataframe data.table

33
推荐指数
2
解决办法
5504
查看次数

为什么expand.grid比data.table的CJ更快?

> system.time(expand.grid(1:1000,1:10000))
   user  system elapsed 
   1.65    0.34    2.03 
> system.time(CJ(1:1000,1:10000))
   user  system elapsed 
   3.48    0.32    3.79 
Run Code Online (Sandbox Code Playgroud)

r data.table

28
推荐指数
2
解决办法
3011
查看次数

每个服用na.rm都有pmin和pmax,为什么没有psum?

似乎R可能缺少一个明显的简单功能:psum.它是以不同的名称存在,还是在某个包中?

x = c(1,3,NA,5)
y = c(2,NA,4,1)

min(x,y,na.rm=TRUE)    # ok
[1] 1
max(x,y,na.rm=TRUE)    # ok
[1] 5
sum(x,y,na.rm=TRUE)    # ok
[1] 16

pmin(x,y,na.rm=TRUE)   # ok
[1] 1 3 4 1
pmax(x,y,na.rm=TRUE)   # ok
[1] 2 3 4 5
psum(x,y,na.rm=TRUE)
[1] 3 3 4 6                             # expected result
Error: could not find function "psum"   # actual result
Run Code Online (Sandbox Code Playgroud)

我意识到这+已经是psum,但是怎么样NA

x+y                      
[1]  3 NA NA  6        # can't supply `na.rm=TRUE` to `+`
Run Code Online (Sandbox Code Playgroud)

有添加的案例psum吗?或者我错过了什么. …

r

28
推荐指数
2
解决办法
3729
查看次数