现在整个世界都在努力使用SSL(这个决定很有意义)我们中的一些人使用github和相关服务来存储csv文件有一点挑战.从URL读取时,read.csv()函数不支持SSL.为了解决这个问题,我正在做一个小舞蹈,我喜欢称之为SSL歌舞伎舞蹈.我用RCurl抓取文本文件,将其写入临时文件,然后用read.csv()读取它.这样做有更顺畅的方法吗?更好的解决方案?
这是SSL kabuki的一个简单示例:
require(RCurl)
myCsv <- getURL("https://gist.github.com/raw/667867/c47ec2d72801cfd84c6320e1fe37055ffe600c87/test.csv")
temporaryFile <- tempfile()
con <- file(temporaryFile, open = "w")
cat(myCsv, file = con)
close(con)
read.csv(temporaryFile)
Run Code Online (Sandbox Code Playgroud) 我有定期运行回归的数据.每个"数据块"的数据都适合不同的回归.例如,每个州可能具有解释从属值的不同功能.这似乎是典型的"拆分 - 应用 - 组合"类型的问题,因此我使用的是plyr包.我可以轻松创建一个lm()运行良好的对象列表.但是,我不能完全理解我以后如何使用这些对象来预测单独data.frame中的值.
这是一个完全人为的例子,说明了我正在尝试做的事情:
# setting up some fake data
set.seed(1)
funct <- function(myState, myYear){
rnorm(1, 100, 500) + myState + (100 * myYear)
}
state <- 50:60
year <- 10:40
myData <- expand.grid( year, state)
names(myData) <- c("year","state")
myData$value <- apply(myData, 1, function(x) funct(x[2], x[1]))
## ok, done with the fake data generation.
require(plyr)
modelList <- dlply(myData, "state", function(x) lm(value ~ year, data=x))
## if you want to see the summaries of the lm() do …Run Code Online (Sandbox Code Playgroud) 我经常遇到需要从data.frame中替换缺失值的情况,其中一些其他data.frame的值处于不同的聚合级别.因此,例如,如果我有一个充满县数据的data.frame,我可能会将NA值替换为存储在另一个data.frame中的状态值.写完相同的merge... ifelse(is.na())yada yada几十次后我决定分解并写一个函数来做到这一点.
这是我做的东西,以及我如何使用它的一个例子:
fillNaDf <- function(naDf, fillDf, mergeCols, fillCols){
mergedDf <- merge(naDf, fillDf, by=mergeCols)
for (col in fillCols){
colWithNas <- mergedDf[[paste(col, "x", sep=".")]]
colWithOutNas <- mergedDf[[paste(col, "y", sep=".")]]
k <- which( is.na( colWithNas ) )
colWithNas[k] <- colWithOutNas[k]
mergedDf[col] <- colWithNas
mergedDf[[paste(col, "x", sep=".")]] <- NULL
mergedDf[[paste(col, "y", sep=".")]] <- NULL
}
return(mergedDf)
}
## test case
fillDf <- data.frame(a = c(1,2,1,2), b = c(3,3,4,4) ,f = c(100,200, 300, 400), g = c(11, 12, 13, 14)) …Run Code Online (Sandbox Code Playgroud) 我正试着用Pandas groupby方法包围我.我想编写一个函数来执行一些聚合函数,然后返回一个Pandas DataFrame.这是使用sum()的简化示例.我知道有更简单的方法来做简单的求和,在现实生活中我的功能更复杂:
import pandas as pd
df = pd.DataFrame({'col1': ['A', 'A', 'B', 'B'], 'col2':[1.0, 2, 3, 4]})
In [3]: df
Out[3]:
col1 col2
0 A 1
1 A 2
2 B 3
3 B 4
def func2(df):
dfout = pd.DataFrame({ 'col1' : df['col1'].unique() ,
'someData': sum(df['col2']) })
return dfout
t = df.groupby('col1').apply(func2)
In [6]: t
Out[6]:
col1 someData
col1
A 0 A 3
B 0 B 7
Run Code Online (Sandbox Code Playgroud)
我没想到会col1在那里两次,也没想到神秘指数在寻找东西.我真的以为我会得到col1&someData.
在我的现实应用程序中,我正在按多个列进行分组,并且真的想要获取DataFrame而不是Series对象.
关于Pandas在上面的例子中做了什么的解决方案或解释的任何想法?
-----添加信息-----
我应该从这个例子开始,我想:
In …Run Code Online (Sandbox Code Playgroud) 我试图做一个简单的插图,其中圆形被绘制在正方形内.我已经使用了rect()从功能grid包和draw.circle()从功能plotrix包之前,所以我想这将是简单的.但显然我错过了一些东西.
以下代码在我看来它应该工作:
require(plotrix)
require(grid)
plot(c(-1, 1), c(-1,1), type = "n")
rect( -.5, -.5, .5, .5)
draw.circle( 0, 0, .5 )
Run Code Online (Sandbox Code Playgroud)
但是我最终得到的圆圈在垂直方向上从正方形中舔出来,如下所示:

我错过了什么?
如果你有一个简单的方法来绘制圆形和正方形,我很想知道它.但我也想知道为什么我的方法不起作用.
谢谢!
我是从R来到Python并尝试使用Python重现我以前在R中做过的一些事情.用于R的矩阵库具有非常漂亮的函数,其被称为nearPD()找到给定矩阵的最接近的正半定(PSD)矩阵.虽然我可以编写一些代码,但是对于Python/Numpy来说是新手,如果有什么东西已经存在,我不会觉得重新发明轮子太兴奋了.关于Python中现有实现的任何提示?
我正在尝试使用SciPy进行一些分布绘图和拟合,使用SciPy进行统计,使用matplotlib进行绘图.我喜欢创建直方图等一些东西:
seed(2)
alpha=5
loc=100
beta=22
data=ss.gamma.rvs(alpha,loc=loc,scale=beta,size=5000)
myHist = hist(data, 100, normed=True)
Run Code Online (Sandbox Code Playgroud)

辉煌!
我甚至可以采用相同的伽马参数并绘制概率分布函数的线函数(在一些谷歌搜索之后):
rv = ss.gamma(5,100,22)
x = np.linspace(0,600)
h = plt.plot(x, rv.pdf(x))
Run Code Online (Sandbox Code Playgroud)

我如何绘制叠加在直方图顶部myHist的PDF线h的直方图?我希望这是微不足道的,但我一直无法弄明白.
所以早些时候我回答了自己关于在R中向量中思考的问题.但是现在我还有另一个问题,我无法"矢量化".我知道向量更快,循环更慢,但我无法弄清楚如何在向量方法中执行此操作:
我有一个数据框(出于感情上的原因,我喜欢称之为my.data),我想对其进行全面的边缘分析.我需要一次删除一些元素并"数值"数据框然后我需要通过仅删除下一个元素再次进行迭代.然后再做一次......再次......我的想法是对我的数据子集进行全面的边际分析.无论如何,我无法想象如何以矢量有效的方式做到这一点.
我缩短了代码的循环部分,它看起来像这样:
for (j in my.data$item[my.data$fixed==0]) { # <-- selects the items I want to loop
# through
my.data.it <- my.data[my.data$item!= j,] # <-- this kicks item j out of the list
sum.data <-aggregate(my.data.it, by=list(year), FUN=sum, na.rm=TRUE) #<-- do an
# aggregation
do(a.little.dance) && make(a.little.love) -> get.down(tonight) # <-- a little
# song and dance
delta <- (get.love) # <-- get some love
delta.list<-append(delta.list, delta, after=length(delta.list)) #<-- put my love
# in a vector
}
Run Code Online (Sandbox Code Playgroud)
显然我在中间砍掉了一堆东西,只是为了让它不那么笨拙.目标是使用更高矢量效率的东西来移除j循环.有任何想法吗?
我使用SQL Server 2005作为数据存储,用于我分析工作的大量数据.这不是一个事务性数据库,因为我没有使用更新或捕获实时数据.我从客户端获取了一些数据,将它们加载到SQL Server中并进行一系列操作.然后我抓住这些数据并将它们拉入R,我将进行大部分分析.然后我将一些数据推送到SQL Server中的表中,也许可以进行一两次连接.
我有一段时间,SQL Server中的日志变得越来越大,我认为创建它们需要一定程度的开销.如何配置SQL Server以便它在很少或没有日志记录的情况下运行?如果事情变得腐败,我很高兴从一开始就开始.任何想法如何使这一切更快?
顺便说一句,没有必要告诉我如何缩小日志,我已经这样做了.但我希望我不必首先制作原木.我只使用数据库来存放数据,因为它太大而无法容纳R中的内存.
我应该使用比Sql Server更简单的数据库吗?随意告诉我,我正用大锤杀死一只蚂蚁.但请推荐一个更合适尺寸的锤子.:)
我正在创建一个R包,我需要它包含一些非R脚本文件,这些文件可以被我的一个函数调用.我自然需要将这些脚本文件与包一起分发.这让我有两个问题:
我试着在Writing R Extensions文档中找到答案,但它没有跳出来.当然,我没有读完整件事.我在这里太老实了吗?