小编Jil*_*ina的帖子

如何在R中将连续变量转换为离散变量?

我有一个编码组 ID 的变量:

d <- data.frame(group = c(0,1,0,2,1,3,2,0,1,2), x=c(1.2,2.3,3.2,2.1,1.3,1.5,2.3,0.4,1.3,1.7))
Run Code Online (Sandbox Code Playgroud)

当我尝试在 ggplot2 中使用它制作箱线图时出现错误

提供给离散尺度的连续值

尝试呈现数据。然后我手动将数据中的至少一个组 ID 更改为文本,一切正常。

所以,我的问题是:是否有一些简单的方法可以将包含有限数量的变量的连续变量更改为离散变量?

r categorical-data

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

R中的秩相关矩阵

在给定具有多列的数据框的情况下,如何在R中以优雅的方式生成秩相关矩阵?我找不到内置函数,所以我尝试了

> test=data.frame(x=c(1,2,3,4,5), y=c(5,4,3,2,1))
> cor(rank(test))
Run Code Online (Sandbox Code Playgroud)

(为简单起见,只有2列,实际数据有5列)

> Error in cor(rank(test)) : supply both 'x' and 'y' or a matrix-like 'x'
Run Code Online (Sandbox Code Playgroud)

我认为这是因为rank需要一个向量.所以我试过了

> cor(lapply(test,rank))
Run Code Online (Sandbox Code Playgroud)

获取应用于数据框中每列的等级,将数据框视为列表,从而产生错误

> supply both 'x' and 'y' or a matrix-like 'x'
Run Code Online (Sandbox Code Playgroud)

我终于得到了一些合作的东西

> cor(data.frame(lapply(test,rank)))
   x  y
x  1 -1
y -1  1
Run Code Online (Sandbox Code Playgroud)

然而,这似乎相当冗长和丑陋.我认为必须有更好的方法 - 如果是这样的话?

r

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

如何将相同的命令应用于变量列表

我想对一堆变量应用t检验.下面是一些模拟数据

d <- data.frame(var1=rnorm(10), 
                var2=rnorm(10), 
                group=sample(c(0,1), 10, replace=TRUE))

# Is there a way to do this in some sort of loop?
with(d, t.test(var1~group))
with(d, t.test(var2~group))

# I tried this but the loop did not give a result!?
varnames <- c('var1', 'var2')
for (i in 1:2) {
  eval(substitute(with(d, t.test(variable~group)),
                  list(variable=as.name(varnames[i]))))  
}
Run Code Online (Sandbox Code Playgroud)

此外,是否可以从t检验的结果中提取值(例如,两个组均值,p值),以便循环将在变量之间产生一个整齐的平衡表?换句话说,我想要的最终结果不是一堆t测试,而是一个像这样的表:

Varname   mean1   mean2   p-value
Var1        1.1    1.2     0.989
Var2        1.2    1.3     0.912
Run Code Online (Sandbox Code Playgroud)

r apply

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

如何将一个图表分成不同的新图表?

我有一个数据库,其中包括1985 - 2012年间不同年份的法律.我想为每年制作不同的17个图(因此,制作一个函数),包括它的'值和前几年,并为每个图保持相同的x和y轴设计,如你所见在如下图所示:

http://i.imgur.com/QttRuSl.png?1

这就是我在1985年至2012年间制作上图的方式:

> v <- ddply(leg.by.melt, .(year), summarise, count = sum(value))
> v
   year count

    1  1985     2
    2  1987     5
    3  1988     9
    4  1989    12
    5  1990    14
    6  1991    11
    7  1992    16
    8  1993    23
    9  1994    25
    10 1995    10
    11 1996    11
    12 1997    24
    13 1998    35
    14 1999    32
    15 2000    24
    16 2001    22
    17 2002    65
    18 2003    42
    19 2004    56
    20 2005    42
    21 2006 …
Run Code Online (Sandbox Code Playgroud)

r ggplot2 plyr

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

ARIMA,ARMA和AIC?

data <-c(88, 84, 85, 85, 84, 85, 83, 85, 88, 89, 91, 99, 104, 112, 126, 138, 146,151,   150, 148, 147, 149, 143, 132, 131, 139, 147, 150, 148, 145, 140, 134, 131, 131, 129, 126, 126, 132, 137, 140, 142, 150, 159, 167, 170, 171, 172, 172, 174, 175, 172, 172, 174, 174, 169, 165, 156, 142, 131, 121, 112, 104, 102, 99, 99, 95, 88, 84, 84, 87, 89, 88, 85, 86, 89, 91, 91, 94, 101, 110, …
Run Code Online (Sandbox Code Playgroud)

r data-modeling forecasting

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

0-1序列没有空格

报告二进制序列时,空间是多余的.这段代码

x <- '1 0 0 0 0 0 1 1 0 1 0 1 1 0 '
y<-gsub(' +', '', x)
Run Code Online (Sandbox Code Playgroud)

完成这项工作,以便我可以从R复制和粘贴.如何对其他格式的0-1序列(和其他一位数据)执行相同的操作,例如,

x <- c(1, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 1, 1, 0)
Run Code Online (Sandbox Code Playgroud)

要么

toString(x)
Run Code Online (Sandbox Code Playgroud)

或者其他什么(为了学习各种选择)?谢谢.

r spaces sequence

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

提示在嵌套for循环中提高性能?

在仅使用整数填充的100x100矩阵中,我在每行中以(包括)元素1,1开始进行成对比较.对于任何为TRUE的比较,我在另一个预分配矩阵[x]中的相应元素上计算+1(这只是一个相似性矩阵).

使用嵌套for循环,此操作需要每行进行N*(N-1)/ 2 + N比较.在我的机器上,下面的代码不需要太长时间,但是有更好的(好的,更快的,更优雅的)方式吗?我已经考虑使用"应用"进行矢量化计算,但到目前为止,没有任何乐趣.

result <- matrix( round(rnorm(10000,sample(5))), ncol=100)
x <-matrix(data=0, nrow=100,ncol=100)

system.time(
for (i in 1:100) {
  for (j in 1:100) {
    for (k in j:100) {
        if (result[i,][j] == result[i,][k]) {
        x[j,][k] = x[j,][k] + 1
        }
    }
  }
}
)
user  system elapsed
6.586   0.599   7.192
Run Code Online (Sandbox Code Playgroud)

这是一个小例子:

"结果"矩阵

      [,1] [,2] [,3] [,4]
[1,]    1    6    1    1
[2,]    6    1    5    3
[3,]    1    5    4    4
[4,]    2    3    4    2

structure(c(1, 6, 1, 2, …
Run Code Online (Sandbox Code Playgroud)

r

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

将多个图表和数据面板导出到*.png(在样式布局()中可以在R中工作)

我正在尝试使用.png设备或.pdf设备导出多个数据面板和1个绘图作为单个图像,我没有取得任何成功.我可以使用R本机绘图设备在R中生成我想要的图像,但是当我尝试直接生成相同的图像时,我得到的结果是我没想到的.

这是我的示例代码

testMat <- matrix(1:20, ncol = 5)##  create data
testMatDF <- as.data.frame(testMat)
names(testMatDF) <- c("Hey there", "Column 2", 
         "Some * Symbols", "And ^ More", 
         "Final Column")
rownames(testMatDF) <- paste("Group", 1:4)

library(gplots) ##  gplots needed for textplot()
layout(matrix(c(1, 1, 2, 3, 3, 3),  2, 3, byrow = TRUE))
curve(dnorm, -3, 4)
textplot(testMat)
textplot(testMatDF)
##  produces what I want within R

layout(matrix(c(1, 1, 2, 3, 3, 3),  2, 3, byrow = TRUE))
png(file='plot1.png')
curve(dnorm, -3, 4)
textplot(testMat)
textplot(testMatDF)
dev.off()
##  only …
Run Code Online (Sandbox Code Playgroud)

plot r

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

如何在expression()中使用atop函数?

我需要添加换行符,但我正在努力使用atop函数expression().这main是我想要分成两行的部分.

> plot (DAC~Chlo,data=brazilw,
        pch=15,col="red",cex=0.5,
        main=expression("Fig. 3. Relationship
                        between diffuse attenuation coefficient at 490 nm 
                        (K"[d]*") and chlorophyll concentration at three coral
                         reef sites"),
        xlab=expression("Chlorophyll concentration (mg "*m^{-3}*")"),
        cex.lab=0.8,
        cex.main=0.8,
        cex.axis=0.8, 
        font.main=1,
        ylim=c(0,0.3),
        xlim=c(0,3.5), 
        ylab=expression("K"[d]*"(m"*-1^{-1}*")"))
Run Code Online (Sandbox Code Playgroud)

expression r plotmath

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

如何将字符类更改为数字类?

我有一个这样的变量:

勇气
3.554,34
56,34

但它的类是“字符”,当我编码时:

gastosbolsonaro <- gastosbolsonaro %>% mutate(VALOR = as.numeric(VALOR))
Run Code Online (Sandbox Code Playgroud)

发生这样的事:

Problem while computing `VALOR = as.numeric(as.character(VALOR))`.
i NAs introduced by coercion
Run Code Online (Sandbox Code Playgroud)

所有值都变为 NA。

我想将超值货币更改为数字类别

r class

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