小编eip*_*i10的帖子

如何用R中的reshape2包解决dcast错误?

我正在尝试使用reshape2包将一些数据从long转换为宽,但是我收到的错误是我无法解决的.在下面的示例中,我创建了一些与我的真实数据类似的虚假数据.我想将每个"subj"转换为一个列,该列包含该主题中给定"ID"号码的所有"信用"的总和.

library(reshape2)  
Run Code Online (Sandbox Code Playgroud)

#创建虚假数据并将其转换为数据框

ID = rep(c(100,101,102,103), each=5)  
subj = rep(c("CHEM","ENGL","HIST","MATH"), 5)  
credits = rep(3, 20)  
df = data.frame(ID, subj, credits)
Run Code Online (Sandbox Code Playgroud)

#从long转换为wide,将"subj"的值作为新列
#,将"credits"的总和作为每个"subj"的值

df.wide = dcast(df, ID ~ subj, value.var=credits, fun.aggregate=sum)
Run Code Online (Sandbox Code Playgroud)

这是我在运行dcast命令时想要得到的:

ID    CHEM    ENGL    HIST    MATH  
100     6       3       3      3  
101     3       6       3      3  
[and so on for each value of ID]  
Run Code Online (Sandbox Code Playgroud)

这是我运行上面代码时实际得到的错误:

Error in .subset2(x, i, exact = exact) : 
recursive indexing failed at level 2
Run Code Online (Sandbox Code Playgroud)

如果我从dcast调用中删除"fun.aggregate = sum",我会得到同样的错误.

另外,如果我使用sample()函数(而不是rep())创建"credits"的值,并调用dcast(没有fun.aggregate = sum),我会收到以下错误:

Error in .subset2(x, i, exact …
Run Code Online (Sandbox Code Playgroud)

r reshape

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

使用ggvis显示纵向数据,滑块控制年份

我正在尝试使用滑块来控制纵向空间数据集中的年份,基本上是一组散点图.我无法弄清楚如何将滑块分配给这个变量 - 你能用ggvis做到吗?

简化的数据集:

data <- data.frame(year=rep(2000:2002, each=23), 
                   x=rnorm(23*3,10), y=rnorm(23*3,10),
                   count=c(rnorm(23,2), rnorm(23,4), rnorm(23,6)))
Run Code Online (Sandbox Code Playgroud)

我尝试过的:

### This is what is looks like in ggplot2, I'm aiming to be able to toggle 
### between these panels
ggplot(data, aes(x, y, size=count)) + geom_point() + facet_grid(~year)

### Here is where I'm at with ggvis
data %>% 
   ggvis(~x, ~y, size=~count) %>% 
   layer_points() 
# I'm not sure how to assign a variable (year) to a slider, I've been trying 
# within the layer_points() function

### I …
Run Code Online (Sandbox Code Playgroud)

r shiny ggvis

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

ggplot2:即使使用fullrange = TRUE,geom_smooth置信区也不会扩展到图的边缘

我一直在努力在ggplot2中生成一些散点图,发现我的geom_smooth se shade(与stat_smooth完全相同)不会扩展我的绘图的整个范围(见情节图),这让我发疯.

您可以从代码中看到我使用了"fullrange = TRUE"并且它确实扩展了线本身(以及我的另一条拟合线上的se阴影),但无论出于何种原因,在我的一条拟合线上阻挡了阴影.

这似乎是一个问题,它与情节的上边界相冲突.如果我将范围扩展到线条触及右边界的点,则阴影继续没有问题,但这样做不是一个选项,因为我必须加倍x和y轴范围才能实现这一点,这会压扁我的数据.

有没有人知道如何让阴影一直延伸到上轴边界?

代码来制作情节

在此输入图像描述

r ggplot2

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

通过data.table或dplyr中的分组列选择每个数字列的绝对值的最大值

以下是我的data.frame的示例:

opts <- seq(-0.5, 0.5, 0.05)
df <- data.frame(combo1=sample(opts, 6),
                 combo2=sample(opts, 6),
                 combo3=sample(opts, 6),
                 gene=rep(c("g1", "g2", "g3"), each=2), stringsAsFactors=F)

df
   combo1 combo2 combo3 gene
1   0.40   0.50  -0.10   g1
2   0.10  -0.20  -0.35   g1
3  -0.35  -0.35   0.40   g2
4   0.00   0.10  -0.30   g2
5  -0.45  -0.10   0.05   g3
6  -0.40  -0.40  -0.05   g3
Run Code Online (Sandbox Code Playgroud)

对于每个组合,我想按基因分组,然后选择最大绝对值.我可以使用dplyr完成此任务:

library(dplyr)
df_final <- data.frame(row.names=unique(df$gene))

for (combo in colnames(df)[1:3]) {

    combo_preds <- df[, c(combo, "gene")]
    colnames(combo_preds) <- c("pred", "gene")

    combo_preds %>%
        group_by(gene) %>%
        arrange(desc(abs(pred))) %>%
        slice(1) …
Run Code Online (Sandbox Code Playgroud)

r dplyr data.table

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

如何在不等频率的时间序列之间进行相关

我每分钟测量室温36分钟,皮肤温度每秒32次测量同一时间段.我有35个重复实验标记(ID).我需要能够查看相关性,但样本的大小不等.

数据:

我有一个data.frame df1,每分钟测量室温,另一个data.frame df2,皮肤温度测量每秒32次.我有36分钟的数据.此外,还有另一个名为ID的列显示实验编号(1-35),但我不知道如何在以下示例数据中表示这一点.所以从技术上讲,我正在寻找基于ID的每个SkinTemp与RoomTemp的相关性.

    df1 <- data.frame(
        roomTemp = rnorm(1*36),
    )

   df2 <- data.frame(
        skinTemp = rnorm(32*60*36),
        )
Run Code Online (Sandbox Code Playgroud)

我试过做:

Data <- data.frame(
  Y=c(df1,df2),
  Variable =factor(rep(c("RoomTemp", "SkinTemp"), times=c(length(df1), length(df2))))
)

cor(Data$Y~Data$Variable)
Run Code Online (Sandbox Code Playgroud)

但这似乎不起作用.

r time-series

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

如何在分解的时间序列图中自定义标题,轴标签等

我非常熟悉通过编写自己的x轴标签或主标题来修改绘图的常用方法,但在绘制时间序列分解的结果时,我无法自定义输出.

例如,

library(TTR)
t <- ts(co2, frequency=12, start=1, deltat=1/12)
td <- decompose(t)
plot(td)
plot(td, main="Title Doesn't Work") # gets you an error message
Run Code Online (Sandbox Code Playgroud)

为您提供观察时间序列,趋势等的基本情况.根据我自己的数据(水面下方的深度变化),我希望能够切换y轴的方向(例如'观察'的ylim = c(40,0),'趋势'的ylim = c(18,12),将'季节'改为'潮汐',包括x轴的单位('时间(天)) '),并为该图提供更具描述性的标题.

我的印象是,我正在做的那种时间序列分析是非常基本的,最终,我可能最好使用另一个包,可能有更好的图形控制,但我想使用ts()和decompose()如果我现在可以(是的,蛋糕和消费).假设这不会太可怕.

有没有办法做到这一点?

谢谢!皮特

plot r time-series timeserieschart

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

R降价格式标题 - pdf输出

我确定这已经在那里,但我似乎无法找到它.如何在编译为pdf的R降价文档中更改标题的字体大小和间距?

谢谢!

pdf latex r r-markdown

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

在 Markdown PDF 中,如何在 for 循环的每次迭代后添加分页符?

例如,如果我的数据框是:

 exampledf <- data.frame(column = c("exampletext1", "exampletext2",  "exmapletext3"))
Run Code Online (Sandbox Code Playgroud)

我希望第一页有“exampletext1”,第二页有“exampletext2”,等等。

\pagebreak作品:

```{r, echo=FALSE}; exampledf[1,]```
   \pagebreak  
```{r, echo=FALSE} exampledf[2,]```
Run Code Online (Sandbox Code Playgroud)

但我的数据框太大,无法实用。

我真的需要遍历我的所有价值观:

for(i in 1:NROW(exampledf)) {
  single <- exampledf[i]
  strwrap(single, 70))
}
Run Code Online (Sandbox Code Playgroud)

我意识到这是一个奇怪的问题。

r page-break knitr r-markdown

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

R.在Excel中将列表导出到单个工作表

我想将不同大小的对象列表导出到单个Excel工作表中.换句话说,我想要显示一个矩阵,然后在它下面显示下一个矩阵.这是一个使用XLConnect的简单示例:

mat1<-matrix(c(0,1,2,3),nrow=2,ncol=2)

mat2<-matrix(c(0,1,2,3,4,5),nrow=2,ncol=3)

list<-list(mat1,mat2)

wb<-loadWorkbook("XLConnectExample1.xlsx",creat=TRUE)
createSheet(wb,name="sheet")
writeWorksheet(wb,list,sheet="sheet")
saveWorkbook(wb)
Run Code Online (Sandbox Code Playgroud)

现在,mat1简单地写在mat2的顶部.

excel r xlsx xlconnect

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

如何将15分钟数据转换为日期时间格式的时间序列,以便我可以使用quantmod进行绘图?

所以我得到了这个我想要转换成xts的数据,所以我可以用quantmod绘制它.(这是15米的图表)

 > sample
                    Date   Open   High   Low  Close Vol.at.Price Volume
515 2016-06-15 pm 1:15:00 1.7381 1.7600 1.710 1.7399       1.7399 176000
516 2016-06-15 pm 1:30:00 1.7389 1.7400 1.725 1.7350       1.7350 152900
517 2016-06-15 pm 1:45:00 1.7350 1.7650 1.720 1.7550       1.7550 179900
518 2016-06-15 pm 2:00:00 1.7550 1.7600 1.740 1.7500       1.7500 130800
519 2016-06-15 pm 2:15:00 1.7550 1.7800 1.745 1.7800       1.7800 188400
520 2016-06-15 pm 2:30:00 1.7800 1.7899 1.730 1.7300       1.7300 256700
521 2016-06-15 pm 2:45:00 1.7300 1.7800 1.730 1.7664       1.7664 151900 …
Run Code Online (Sandbox Code Playgroud)

datetime timestamp r time-series quantmod

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