任何人都知道如何利用ggplot或格子进行生存分析?做一个格子或类似生存的生存图表会很好.
所以最后我玩了一下,找到了一个Kaplan-Meier情节的解决方案.我为将列表元素放入数据帧中的混乱代码道歉,但我无法想出另一种方法.
注意:它只适用于两级层次.如果有人知道我怎么能x<-length(stratum)这样做,请告诉我(在Stata我可以附加一个宏观 - 不确定它在R中是如何工作的).
ggkm<-function(time,event,stratum) {
m2s<-Surv(time,as.numeric(event))
fit <- survfit(m2s ~ stratum)
f$time <- fit$time
f$surv <- fit$surv
f$strata <- c(rep(names(fit$strata[1]),fit$strata[1]),
rep(names(fit$strata[2]),fit$strata[2]))
f$upper <- fit$upper
f$lower <- fit$lower
r <- ggplot (f, aes(x=time, y=surv, fill=strata, group=strata))
+geom_line()+geom_ribbon(aes(ymin=lower,ymax=upper),alpha=0.3)
return(r)
}
Run Code Online (Sandbox Code Playgroud) 是否可以从ggplot2图表中删除顶部和右侧边框?
也就是说,我想保留x和y轴,但是移除图形周围的黑框的其余部分.
//中号
我为一些数据创建了一个双嵌套结构。我如何访问第二级(或就此而言是第 n 级?)的数据
library(gapminder)
library(purrr)
library(tidyr)
gapminder
nest_data <- gapminder %>% group_by(continent) %>% nest(.key = by_continent)
nest_2<-nest_data %>% mutate(by_continent = map(by_continent, ~.x %>% group_by(country) %>% nest(.key = by_country)))
Run Code Online (Sandbox Code Playgroud)
我现在如何将中国的数据从 nest_2 获取到数据框或 tibble 中?
我可以得到整个亚洲的数据,但我无法孤立中国。
a<-nest_2[nest_2$continent=="Asia",]$by_continent ##Any better way of isolating Asia from nest_2?
Run Code Online (Sandbox Code Playgroud)
我以为我可以做到
b<-a[a$country=="China",]$by_country
Run Code Online (Sandbox Code Playgroud)
但我收到以下错误
Error in a[a$country == "China", ] : incorrect number of dimensions
> glimpse(a)
List of 1
$ :Classes ‘tbl_df’, ‘tbl’ and 'data.frame': 33 obs. of 2 variables:
..$ country : Factor w/ 142 levels …Run Code Online (Sandbox Code Playgroud) library(dplyr)
a <- data_frame(id = c("A","A","A","B","B","B"),
b = c(1.2, 1.5, 1.8, 1.1, 1.6, 1.4))
Run Code Online (Sandbox Code Playgroud)
现在,我想为id中的每个catergories检索最接近1.43的值.我以为我可以用:
a %>% group_by(id) %>% nth(which.min(abs(.$b-1.43)))
Run Code Online (Sandbox Code Playgroud)
但是dplyr说
Error: Don't know how to generate default for object of class grouped_df/tbl_df/tbl/data.frame
Run Code Online (Sandbox Code Playgroud) 我想创建一个双重嵌套的数据结构,其中c嵌套在a中,而进一步嵌套在id中。
library(tidyverse)
m<-data_frame(id=c(100,101,100,101,100,101,100,101),
a=c("A","A","B","B","A","A","D","D"),
c=c(1:8))
m2 <- m %>%
group_by(id) %>%
nest(.key = one)
Run Code Online (Sandbox Code Playgroud)
所以第一个巢就可以了。但是我想进一步嵌套在m2 $ one之内。
知道我该怎么做吗?
我可以去:
m3 <- m2 %>%
mutate(
two=map(m2$one,~(.x %>%
group_by(a) %>%
nest(.key=two)))
)
Run Code Online (Sandbox Code Playgroud)
但这会在m3内而不是m2 $ one内提供另一列。
是否可以在函数调用中仅传递变量名并在函数中使用它?
\n\n伪代码:
\n\nq<-function(A){\n b<-(w%in%A.2|w%in%A.7) \n factor(b,levels=c(F,T),labels=c("non-"A,A))}\n\n\nw<-c(0:10)\ne.2<-c(1,2)\ne.7<-c(6,7)\nRun Code Online (Sandbox Code Playgroud)\n\n我\xc2\xb4d 喜欢做的是
\n\nq(e)\nRun Code Online (Sandbox Code Playgroud)\n\n并已返回
\n\n非 e,e,e,非 e,非 e,e,e,非 e,非 e
\n\n//M
\n\nq<-function(A) {\n a2<-get(paste(a,".2",sep=""))\n a7<-get(paste(a,".7",sep=""))\n b<-(w%in%a2|%in%a7) \n factor(b,levels=c(F,T),labels=c(paste("non-",a,sep=""),a)) \n}\n\nq("e")\nRun Code Online (Sandbox Code Playgroud)\n\n谢谢,
\n\n中号
\n我试图模拟死亡超过7年的累积概率如下:
tab <- data.frame(id=1:1000,char=rnorm(1000,7,4))
cum.prob <- c(0.05,0.07,0.08,0.09,0.1,0.11,0.12)
Run Code Online (Sandbox Code Playgroud)
如何tab$id根据累积概率以矢量化方式从无需替换的样本中进行采样cum.prob?从年1开始采样的ids不一定能在2年内再次采样.因此,lapply(cum.prob,function(x) sample(tab$id,x*1000))它不起作用.有可能对此进行矢量化吗?
//中号
使用Wickhams中的示例介绍数据科学中的purrr,我试图创建一个双嵌套列表.
library(gapminder)
library(purrr)
library(tidyr)
gapminder
nest_data <- gapminder %>% group_by(continent) %>% nest(.key = by_continent)
Run Code Online (Sandbox Code Playgroud)
如何进一步嵌套国家/地区,以便nest_data包含by_continent和最新包含by_conar的嵌套by_contry,最终包含t_bled?
此外,在为gapminder数据创建此数据结构后 - 您将如何运行每个国家/地区的bookchapter中的回归模型示例?
我是LaTeX的新手,安装了MacTeX 2009软件包,目的是将R输出的表格输入LaTeX并格式化为PDF格式.
当我在R中运行一个示例时,我得到了以下LaTeX代码(下面)(它在R中呈现好,但我想使用TeXshop).但是,当我将其粘贴到TeXshop窗口时,我收到以下错误:
./Untitled.tex:2:LaTeX错误:环境表未定义
我确定这里有一些非常基本的东西.
% latex.default(cstats, title = title, caption = caption, rowlabel = rowlabel,
% col.just = col.just, numeric.dollar = FALSE, insert.bottom = legend,
% rowname = lab, dcolumn = dcolumn, extracolheads = extracolheads,
% extracolsize = Nsize, ...)
%
\begin{table}[!tbp]
\caption{Descriptive Statistics by treatment\label{f}}
\begin{center}
\begin{tabular}{lccc}\hline\hline
\multicolumn{1}{l}{}&\multicolumn{1}{c}{Drug}&\multicolumn{1}{c}{Placebo}&\multicolumn{1}{c}{Test Statistic}\tabularnewline
&\multicolumn{1}{c}{{\scriptsize $N=263$}}&\multicolumn{1}{c}{{\scriptsize $N=237$}}&\tabularnewline
\hline
age&{\scriptsize 46.5~}{49.9 }{\scriptsize 53.2} &{\scriptsize 46.7~}{50.0 }{\scriptsize 53.4} &$ F_{1,498}=0.1 ,~ P=0.754 ^{1} $\tabularnewline
sex~:~m&47\%~{\scriptsize~(123)}&44\%~{\scriptsize~(104)}&$ \chi^{2}_{1}=0.42 ,~ P=0.517 ^{2} $\tabularnewline
Primary~Symptoms~:~Depressed&0\%~{\scriptsize~(0)}&0\%~{\scriptsize~(0)}&$^{2}$\tabularnewline
~~~~Headache&0\%~{\scriptsize~(0)}&0\%~{\scriptsize~(0)}&$^{2}$\tabularnewline
~~~~Hangnail&0\%~{\scriptsize~(0)}&0\%~{\scriptsize~(0)}&$^{2}$\tabularnewline
~~~~Muscle~Ache&0\%~{\scriptsize~(0)}&0\%~{\scriptsize~(0)}&$^{2}$\tabularnewline
~~~~Stomach~Ache&0\%~{\scriptsize~(0)}&0\%~{\scriptsize~(0)}&$^{2}$\tabularnewline …Run Code Online (Sandbox Code Playgroud) 如何获取n数据框中互斥的虚拟变量并将它们连接成单个变量?在以下示例中
k <- data.frame(H=sample(c(T, F), 100, T))
ifelse(k$H==T, F, sample(c(T, F))) -> k$k
k$u <- ifelse(k$H==T | k$k==T, F, T)
Run Code Online (Sandbox Code Playgroud)
是否有一种简单的方法可以将这些转换为i具有级别的变量H,k或者u?
ifelse在这个例子中,我想你可以用它等,但在我的数据文件中,我有几百个假人,而且我太懒了,不能手动执行此操作.