我正在尝试使用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) 我正在尝试使用滑块来控制纵向空间数据集中的年份,基本上是一组散点图.我无法弄清楚如何将滑块分配给这个变量 - 你能用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) 我一直在努力在ggplot2中生成一些散点图,发现我的geom_smooth se shade(与stat_smooth完全相同)不会扩展我的绘图的整个范围(见情节图),这让我发疯.
您可以从代码中看到我使用了"fullrange = TRUE"并且它确实扩展了线本身(以及我的另一条拟合线上的se阴影),但无论出于何种原因,在我的一条拟合线上阻挡了阴影.
这似乎是一个问题,它与情节的上边界相冲突.如果我将范围扩展到线条触及右边界的点,则阴影继续没有问题,但这样做不是一个选项,因为我必须加倍x和y轴范围才能实现这一点,这会压扁我的数据.
有没有人知道如何让阴影一直延伸到上轴边界?

以下是我的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) 我每分钟测量室温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)
但这似乎不起作用.
我非常熟悉通过编写自己的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()如果我现在可以(是的,蛋糕和消费).假设这不会太可怕.
有没有办法做到这一点?
谢谢!皮特
我确定这已经在那里,但我似乎无法找到它.如何在编译为pdf的R降价文档中更改标题的字体大小和间距?
谢谢!
例如,如果我的数据框是:
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)
我意识到这是一个奇怪的问题。
我想将不同大小的对象列表导出到单个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的顶部.
所以我得到了这个我想要转换成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) r ×10
time-series ×3
r-markdown ×2
data.table ×1
datetime ×1
dplyr ×1
excel ×1
ggplot2 ×1
ggvis ×1
knitr ×1
latex ×1
page-break ×1
pdf ×1
plot ×1
quantmod ×1
reshape ×1
shiny ×1
timestamp ×1
xlconnect ×1
xlsx ×1