小编Jar*_*red的帖子

R中模型矩阵中因子的所有级别

我有一个data.frame数字和因子变量组成,如下所示.

testFrame <- data.frame(First=sample(1:10, 20, replace=T),
           Second=sample(1:20, 20, replace=T), Third=sample(1:10, 20, replace=T),
           Fourth=rep(c("Alice","Bob","Charlie","David"), 5),
           Fifth=rep(c("Edward","Frank","Georgia","Hank","Isaac"),4))
Run Code Online (Sandbox Code Playgroud)

我想构建一个matrix为该因子分配虚拟变量并单独保留数值变量.

model.matrix(~ First + Second + Third + Fourth + Fifth, data=testFrame)
Run Code Online (Sandbox Code Playgroud)

正如预期的那样,在运行时会将lm每个因子的一个级别作为参考级别.但是,我想为matrix所有因素的每个级别构建一个带有虚拟/指示变量的变量.我正在建立这个矩阵,glmnet所以我不担心多重共线性.

有没有办法model.matrix为每个级别的因子创建假人?

model r matrix indicator

62
推荐指数
4
解决办法
5万
查看次数

在R中使用Stata变量标签

我有一堆Stata .dta文件,我想在R中使用.

我的问题是变量名对我没有帮助,因为它们就像"q0100","q0565","q0500"和"q0202".然而,它们被标记为"psu","怀孕的数量","户主"和"航点".

我希望能够抓住标签("psu","航点"等等),并将它们用作我的变量/列名称,因为这些更容易让我使用.

有没有办法做到这一点,最好是在R中,还是通过Stata本身?我知道库(外国)中的read.dta,但不知道它是否可以将标签转换为变量名.

variables r labels stata

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

ggplot2中geom_line的两个颜色标度

我有一个图表(要复制的代码将在下面),它有两行(和点)数据需要进行颜色编码,然后三组置信区间(行)需要有自己的颜色编码.

不幸的是,ggplot看到了对geom_line()的两次调用,并且它们都以相同的比例拟合.

在此输入图像描述

有没有办法让中心线和点有一个刻度(和图例条目),而外线有一个单独的刻度(和图例条目)?

我见过像ggplot2这样的(复杂的)答案:在不同的层上系统地多个颜色标度或颜色变换?但这依赖于旧的原型系统,我相信现在已逐步淘汰(?).

谢谢你的帮助.

用于生成数据和图形的代码.抱歉长度:

exShapedMayGroup <- structure(list(Date = structure(c(14730, 14730, 14730, 14731, 
14731, 14731, 14734, 14734, 14734, 14735, 14735, 14735, 14736, 
14736, 14736, 14737, 14737, 14737, 14740, 14740, 14740, 14741, 
14741, 14741, 14742, 14742, 14742, 14743, 14743, 14743, 14744, 
14744, 14744, 14745, 14745, 14745, 14746, 14746, 14746, 14748, 
14748, 14748, 14749, 14749, 14749, 14750, 14750, 14750, 14750, 
14750, 14750, 14751, 14751, 14751, 14752, 14752, 14752, 14752, 
14752, 14752, 14754, 14754, 14754, 14756, 14756, 14756, …
Run Code Online (Sandbox Code Playgroud)

statistics graphics r ggplot2

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

ggplot中的堆栈点

我正在使用ggplot下面的代码和数据制作一个dotplot ,产生下面的图表.

ggplot(data=holder, aes(x=Coef, y=CoefShort, colour=factor(Name))) + geom_point() + labs(x="Value", y="Coefficient") + scale_colour_discrete("Model")
Run Code Online (Sandbox Code Playgroud)

散点图

它们是大量的过度绘图,我想在点之间创建一些垂直分离.但它必须是系统的,即订单总是红 - 绿 - 蓝.

geom_stack只有当x值相同时才会起作用,而不是当y值相同时.我尝试使用相反的轴(交换x和y),做一个position_dodge()然后做一个coord_flip().这仅适用于条形图,如下所示.

ggplot(data=holder, aes(y=Coef, x=CoefShort, fill=factor(Name))) + geom_bar(position="dodge", aes(ymax=Coef)) + labs(y="Value", x="Coefficient") + scale_fill_discrete("Model") + coord_flip()
Run Code Online (Sandbox Code Playgroud)

垂直躲闪的条形图

任何想法如何实现堆叠geom_point()?谢谢.

数据:

structure(list(Coef = c(-3875.46969970703, 7871.08213392282, 1120.33185255098, 1510.13540851347, 1439.07714113149, 1800.92398445336, -3760.05411752962, 8183.74295221482, 1126.98290537184, 1517.99524139857, 1442.73063836897, 1808.03721179571, -90.6507661872817, -71.7225864185226, -103.615416254984, -732.167583256825, -1075.67574987664, -1908.56266462926, -7362.80215630299, 8886.12888250011, 655.767448263926, 848.716877683527, 869.395903077767, 998.254438325812, -211.682481369473, -303.310032581644, -506.1995360406, -978.697664841985, -1440.30190190734, -2325.22236024601, 2625.94998656519, 3573.68798735398, 4217.82910198788, 4534.8789695778, …

plot r ggplot2

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

带字符xintercept的geom_vline

我有一些ggplot代码在0.8.9但没有在0.9.1中工作正常.

我将绘制数据,theDF并希望绘制一条垂直线xintercept="2010 Q1." theGrid仅用于创建theDF.

theGrid <- expand.grid(2009:2011, 1:4)
theDF <- data.frame(YrQtr=sprintf("%s Q%s", theGrid$Var1, theGrid$Var2), 
                    Minutes=c(1000, 2200, 1450, 1825, 1970, 1770, 1640, 1920, 1790, 1800, 1750, 1600))
Run Code Online (Sandbox Code Playgroud)

使用的代码是:

g <- ggplot(theDF, aes(x=YrQtr, y=Minutes)) + 
         geom_point() + 
         opts(axis.text.x=theme_text(angle=90))

g + geom_vline(data=data.frame(Vert="2010 Q2"), aes(xintercept=Vert))
Run Code Online (Sandbox Code Playgroud)

同样,这在R 2.13.2中使用ggplot2 0.8.9也很好,但在R 2.14+中没有ggplot2 0.9.1.

解决方法是:

g + geom_vline(data=data.frame(Vert=4), aes(xintercept=Vert))
Run Code Online (Sandbox Code Playgroud)

但这对我的问题不是一个好的解决方案.

也许乱搞scale_x_discrete可能有帮助吗?

plot r ggplot2

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

将稀疏矩阵写入R中的CSV

我有一个稀疏矩阵(dgCMatrix)作为拟合a的结果glmnet.我想把这个结果写成一个.csv但不能使用write.table()矩阵,因为它不能强制转换成一个data.frame.

有没有办法将稀疏矩阵强制为a data.frame或常规矩阵?或者有没有办法将它写入文件,同时保留可能是行名称的系数名称?

statistics r matrix sparse-matrix

4
推荐指数
3
解决办法
7889
查看次数

将dotplot保存为R中的pdf

在函数内部执行此命令时,我无法将点图保存为pdf.

正常调用时工作正常:

df <- data.frame(a = runif(10), b = runif(10), c = runif(10), x = 1:10)  
pdf("test.pdf")  
dotplot(a + b + c ~ x, data = df, type = "l", auto.key=TRUE)  
dev.off()
Run Code Online (Sandbox Code Playgroud)

但是,如果此代码在函数内部,它将无法工作,只会生成一个空的或空白的文件:

plotFunc <- function(model)  
{  
    pdf("test.pdf")  
    dotplot(a + b + c ~ x, data = model, type = "l", auto.key=TRUE)  
    dev.off()  
}
plotFunc(df)
Run Code Online (Sandbox Code Playgroud)

但是,在没有文件命令的情况下调用该函数将成功打印到图形窗口:

plotWinFunc <- function(model)  
{  
    dotplot(a + b + c ~ x, data = model, type = "l", auto.key=TRUE)  
}  
plotWinFunc(df)
Run Code Online (Sandbox Code Playgroud)

这让我相信dotplot()在输出到文件时会出现问题.并且文件的类型无关紧要,我已尝试使用bmp和pdf,两种方法都不起作用.

如何成功将dotplot写入文件?我是否必须使用晶格包中的特殊命令或在某处出错?

谢谢你的帮助.

pdf plot r lattice

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