小编Ric*_*ron的帖子

R中的叠加直方图(首选ggplot2)

我试图用ggplot2创建这样的分层直方图: 我想要创建的样式图

以下是我认为可行的一些数据和代码:

my.data <- data.frame(treat = rep(c(0, 1), 100), prop_score = runif(2 * 100))
my.data <- transform(my.data, treat = ifelse(treat == 1, "treatment", "control"))
my.data <- transform(my.data, treat = as.factor(treat))
my.fig <- ggplot() + geom_histogram(data = my.data, binwidth = 0.05, alpha = 0.01, aes(x = prop_score, linetype = treat, position = identity)) 
Run Code Online (Sandbox Code Playgroud)

但我的代码产生了这个: 在此输入图像描述

谢谢!我更喜欢ggplot2(在我学习的时候,我认为我只是学习了普通的,可扩展的绘图语言),但我对任何事情都很开放.

plot r histogram ggplot2

4
推荐指数
1
解决办法
4411
查看次数

SQLite - 加入两个子查询

或者至少我认为它们被称为子查询(新手和SQLite中的自我训练).我SELECT在同一个数据库中有两个表的两个语句.我想沿着列date和这两个子查询加入symbol.子查询单独工作,但当我尝试JOIN我得到一个错误(error in statement: near "JOIN": syntax error).这是我的查询字符串:

SELECT date, symbol, SUM(oi*contract_settle) AS oi_dollar
    FROM (SELECT date, symbol, oi, contract_settle
            FROM ann
            UNION
            SELECT date, symbol, oi, contract_settle
            FROM qtr) 
    GROUP BY date, symbol
    HAVING oi_dollar > 0
    JOIN
    (SELECT date, symbol, ret FROM crsp
    USING (date, symbol))
Run Code Online (Sandbox Code Playgroud)

谢谢!

sqlite join subquery

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

在R中的宽动物园对象中快速应用xts向量运算

这是我昨天学到的问题的延伸apply.weekly.这很好用,但我想在宽zoo对象上做这件事.如果我apply.weekly在宽范围内使用zoo它会对列进行求和,然后执行每周聚合:

> library(xts)
> set.seed(2001)
> zoo.daily <- zoo(data.frame(a=rnorm(20), b=rnorm(20), c=rnorm(20)), order.by=as.Date("2001-05-25") + 0:19)
> apply.weekly(zoo.daily, sum)
2001-05-27 2001-06-03 2001-06-10 2001-06-13 
  1.091999  -3.017688   3.842305   2.045370 
> apply.weekly(zoo.daily[, 1] + zoo.daily[, 2] + zoo.daily[, 3], sum) 
2001-05-27 2001-06-03 2001-06-10 2001-06-13 
  1.091999  -3.017688   3.842305   2.045370 
Run Code Online (Sandbox Code Playgroud)

我尝试了apply运营商系列,但这些似乎剥离了zoo日期索引.我可以在一个for循环中完成它,但它确实非常耗时(远远超过周期性aggregate函数的四倍as.yearmon).这是for循环:

week.ends <- index(zoo.daily[endpoints(zoo.daily, "weeks")[-1], ])
num.weeks <- nweeks(zoo.daily)
num.stocks <- ncol(zoo.daily)
zoo.weeks <- zoo(matrix(NA, …
Run Code Online (Sandbox Code Playgroud)

aggregate r apply zoo xts

3
推荐指数
1
解决办法
2678
查看次数

带有 WHERE 和 HAVING 子句的 sqldf 中的 LEFT OUTER JOIN

我在 R 中有两个数据框,我想有条件地将它们合并到id和 上day。合并是right合并到left变量的变量尽可能是新的/新鲜的/最近的,但必须至少是三天前的。

但是,如果没有匹配的right,以我的id-date在对left我还是想留住他们。我的研究有两个部分,所以我不想放弃的id-day意见,只是因为他们是不完整的。

我可以sqldf一步完成吗?我目前的方法需要一个额外的基础 R merge

left <- data.frame(id=rep(1:5, each=10),
                   day=rep(1:10, times=5),
                   x=rnorm(5*10))
right <- data.frame(id=rep(1:2, each=21),
                   day=rep(-10:10, times=2),
                   y=rnorm(2*21))
combined <- sqldf("SELECT L.id, L.day, L.x, R.y
                  FROM left L LEFT OUTER JOIN right R
                  ON (L.id = R.id)
                  WHERE ((L.day - R.day) >= 3)
                  GROUP BY L.id, L.day
                  HAVING (R.day = MAX(R.day))")
combined                  

combined.2 …
Run Code Online (Sandbox Code Playgroud)

r sqldf

3
推荐指数
1
解决办法
3331
查看次数

将后缀附加到csv文件(或SQLite数据库)中的条目列

我有一个相对较大的csv文件(1.2gb ...大到我的一台计算机上的2GB RAM).对于一列中的每个条目,我想附加"1C",以便我可以加入/合并另一个dataframe/db表.

如果文件不是那么大,那么很容易read.csv导入data然后再使用data$symbol <- paste(data$symbol, "1C", sep="").但现在我收到了can't allocate vector of size x警告.

手动解决方案scan(),我唯一的选择吗?(我有点害怕破坏我的数据)谢谢!

csv r

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

使用Sweave将源R文件打印到附录

我将R和Rnw文件分开,然后load("file.R")在第一个Sweave块中加载R数据/图.有没有办法可以将源文件打印到附录而不执行所有代码?(即,代码足够慢,我不希望source()它在一个echo=TRUE块中).

谢谢!


更新 - 实际上,我认为我的source()想法不起作用.

r sweave

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

在Sweave中更改ggplot2绘图的大小,而不会使文本/数字不成比例地大

我发现这个问题是关于改变Sweave中ggplot2图的大小.我添加了Sweaveopts{width=3, height=3}它,它确实缩小了绘图的大小,但它没有缩小文本.所以最后,轴上的所有数字都重叠了.

有没有办法在Sweave中缩放整个ggplot2图,这样我就不必手动缩放原始ggplot2调用中的每个组件?这似乎是我应该做的事情,但我无法在ggplot2书籍或网站上找到它.谢谢!

FWIW,这是我在Sweave的电话:

\SweaveOpts{width=3, height=3}
\begin{figure}
\begin{center}
<<fig=TRUE>>=
print(plot.m)
@
\end{center}
\caption{stuff}
\label{fig:stuff}
\end{figure}
Run Code Online (Sandbox Code Playgroud)

并且生成ggplot2图的调用:

plot.m <- ggplot(temp, aes(date, spread)) + geom_bar(stat="identity") + scale_x_date(major="years", minor="months")
Run Code Online (Sandbox Code Playgroud)

r ggplot2 sweave

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

将指标变量添加到长数据框中,以便当值从一年增加到下一年时

我有一个长数据框,有三列fyear,ticdcvt(财政年度,股票代码和总可转换债务).大约有18个财政年度和几千个代码.我想添加一个指标变量,每当dcvt从一年到下一年上升时都是一个变量.

我试过了ddply,但是我丢失了fyear专栏并且不确定如何取回专栏.

library(plyr)
temp <- data.frame(fyear = rep(1992:2009, 10), tic = rep(letters[1:10], each = 18), dcvt = rnorm(180, 200, 10))
my.fun <- function(x) x <- c(0, ifelse(tail(x, -1) - head(x, -1) > 0, 1, 0))
temp2 <- ddply(temp, "tic", colwise(my.fun, "dcvt"))
Run Code Online (Sandbox Code Playgroud)

我也尝试使用reshape2包转换为广泛,然后运行for循环,但当然,这需要永远.

有没有办法可以快速完成这项工作?我应该zoo使用宽物体diff吗?如果可以的话,我想避免通过时间序列.谢谢!

r plyr

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

SAS中的Jaro-Winkler字符串比较功能

SAS中是否有Jaro-Winkler字符串比较的实现?

看起来Link King有Jaro-Winkler,但我更喜欢自己调用这个功能的灵活性.

谢谢!

sas jaro-winkler

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

当条目i可以取入条目i-1的值时避免循环

我有大多数NA条目的向量.我想NA用前面的非NA入口替换每个向量.具体来说,第一个条目将始终为1,后面跟着一堆NAs,我想用1代替.i第一个条目可能是另一个数字,比方说2,然后是更多NAs,我想用2代替.等等.下面的循环实现了这一点,但必须有更多的R方式来做,对吧?我想用矢量化ifelse(),但我无法弄清楚如何用ith条目替换i-1th条目.

> vec <- rep(NA, 10)
> vec
 [1] NA NA NA NA NA NA NA NA NA NA
> vec[1] <- 1; vec[4] <- 2; vec[7] <- 3
> vec
 [1]  1 NA NA  2 NA NA  3 NA NA NA
> for (i in 1:length(vec)) if (is.na(vec[i])) vec[i] <- vec[i-1]
> vec
 [1] 1 1 1 2 2 2 3 …
Run Code Online (Sandbox Code Playgroud)

loops r

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

"word#string"idiom(扩展字符串函数的一部分)

我试图forvalues在Stata版本11.2 的循环中标记变量.

但是,我无法使用扩展字符串函数word # of string习惯用法:

local names `""Growth" "Mature" "All""'

forvalues i = 0/2 {
    local name : word `i' of `names'
    display "`name'"
}
Run Code Online (Sandbox Code Playgroud)

这遵循Statalist解决方案,但我不断收到invalid syntax错误.

我也尝试过local names Growth Mature All,但这也不起作用.

有没有办法在算法上做到这一点?

stata stata-macros

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

将包含观察数的列添加到 esttab 汇总统计表

我想使用SSC 上esttabestout软件包制作一个汇总统计表。我可以把表格做得很好,但我想添加一个列来计算每个变量的非缺失观测值的数量。也就是说,有些变量可能不完整,我希望读者能够清楚这一点。

在下面的示例中,我删除了 的前五个观察值price,因此我希望该行中有 69。但是我的代码不包括特定于行的观察计数,只包括页脚中的观察总数。

sysuse auto, clear
estpost summarize, detail
replace price = . in 1/5
local screen ///
    cells("N mean sd min p50 max") ///
    nonumber label 
esttab, `screen'
Run Code Online (Sandbox Code Playgroud)

这会产生一个空N列,我希望在 69 处有一个空列,然后是所有 74 列。

stata

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

标签 统计

r ×8

ggplot2 ×2

stata ×2

sweave ×2

aggregate ×1

apply ×1

csv ×1

histogram ×1

jaro-winkler ×1

join ×1

loops ×1

plot ×1

plyr ×1

sas ×1

sqldf ×1

sqlite ×1

stata-macros ×1

subquery ×1

xts ×1

zoo ×1