小编Mis*_*sha的帖子

在ggplot或lattice中使用Surv对象

任何人都知道如何利用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)

analysis r graph ggplot2 lattice

5
推荐指数
1
解决办法
2075
查看次数

从ggplot2中删除顶部和右侧边框

是否可以从ggplot2图表中删除顶部和右侧边框?

也就是说,我想保留x和y轴,但是移除图形周围的黑框的其余部分.

//中号

r ggplot2

5
推荐指数
1
解决办法
7396
查看次数

访问 R 中的嵌套列表

我为一些数据创建了一个双嵌套结构。我如何访问第二级(或就此而言是第 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)

r tidyr purrr

5
推荐指数
1
解决办法
5686
查看次数

在dplyr中找到最接近x的值

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)

r dplyr

5
推荐指数
3
解决办法
4659
查看次数

tidyverse和purrr的双重嵌套

我想创建一个双重嵌套的数据结构,其中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内提供另一列。

r purrr tidyverse

5
推荐指数
1
解决办法
426
查看次数

将变量名传递给 r 中的函数

是否可以在函数调用中仅传递变量名并在函数中使用它?

\n\n

伪代码:

\n\n
q<-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)\n
Run Code Online (Sandbox Code Playgroud)\n\n

我\xc2\xb4d 喜欢做的是

\n\n
q(e)\n
Run Code Online (Sandbox Code Playgroud)\n\n

并已返回

\n\n

非 e,e,e,非 e,非 e,e,e,非 e,非 e

\n\n

//M

\n\n
\n\n
q<-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")\n
Run Code Online (Sandbox Code Playgroud)\n\n

谢谢,

\n\n

中号

\n

variables r function

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

r中的递归采样

我试图模拟死亡超过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))它不起作用.有可能对此进行矢量化吗?

//中号

r sampling

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

在整齐的双重嵌套

使用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中的回归模型示例?

r tidyr purrr

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

如何编译从R导出的LaTeX表?

我是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)

latex

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

从多个虚拟变量到单个变量

如何获取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在这个例子中,我想你可以用它等,但在我的数据文件中,我有几百个假人,而且我太懒了,不能手动执行此操作.

variables r dataframe

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

标签 统计

r ×9

purrr ×3

ggplot2 ×2

tidyr ×2

variables ×2

analysis ×1

dataframe ×1

dplyr ×1

function ×1

graph ×1

latex ×1

lattice ×1

sampling ×1

tidyverse ×1