我想在由列名称中的模式定义的不同列集上按行计算累积平均值。
a示例数据,有两组分别以和开头的列b:
a1 = c(1, 2, 3)
a2 = c(4, 5, 6)
a3 = c(7, 8, 9)
a4 = c(10, 11, 12)
b1 = c(10, 20, 30)
b2 = c(40, 50, 60)
b3 = c(70, 80, 90)
b4 = c(100, 110, 120)
df = data.frame(a1, a2, a3, a4, b1, b2, b3, b4)
> df
a1 a2 a3 a4 b1 b2 b3 b4
1 1 4 7 10 10 40 70 100
2 2 5 8 11 …Run Code Online (Sandbox Code Playgroud) 就像标题一样,我想在我的模型中使用多个自变量。
有一个简单的例子:
mpg如果我想查看和之间的关系disp,我可以使用这个:
mtcars %>% ggplot(aes(y = mpg, x = disp)) +
geom_point() +
geom_smooth(formula = y ~ x)
Run Code Online (Sandbox Code Playgroud)
mpg然后我想看看和dispadjustment之间的关系hp,我写了下面的代码,出现了错误:
mtcars %>% ggplot(aes(y = mpg, x = disp)) +
geom_point() +
geom_smooth(formula = y ~ x + hp)
# Computation failed in `stat_smooth()`:
# object 'hp' not found
Run Code Online (Sandbox Code Playgroud)
也许我没有映射hp,ggplot(aes())我尝试了这个,但发生了同样的错误:
mtcars %>% ggplot(aes(y = mpg, x = disp, z = hp)) +
geom_point() +
geom_smooth(formula = y ~ x …Run Code Online (Sandbox Code Playgroud) 我想在数据帧中的特定位置插入空白行。
我的数据框是这样的:
dat <- data.frame(group = c(rep('A', 1),rep('B', 4),rep('C', 2), rep('D', 2)))
group
1 A
2 B
3 B
4 B
5 B
6 C
7 C
8 D
9 D
Run Code Online (Sandbox Code Playgroud)
我的预期是这样的:
dat.wanted <- data.frame(group = c(NA,rep('A', 1),NA,rep('B', 4),NA,rep('C', 2), NA,rep('D', 2)))
group
1 <NA>
2 A
3 <NA>
4 B
5 B
6 B
7 B
8 <NA>
9 C
10 C
11 <NA>
12 D
13 D
Run Code Online (Sandbox Code Playgroud)
我尝试了一些代码:
# 1 bad codes cause you have to check the …Run Code Online (Sandbox Code Playgroud) 我查了一些网页(但他们的结果不符合我的需要):
我想写一个可以做到这一点的函数:
说有一个向量a。
a = c(100000, 137862, NA, NA, NA, 178337, NA, NA, NA, NA, NA, 295530)
Run Code Online (Sandbox Code Playgroud)
首先,找到单个和连续 前后的值NA。在这种情况下是137862, NA, NA, NA, 178337和178337, NA, NA, NA, NA, NA, 295530。
其次,计算每个部分的斜率,然后替换NA.
# 137862, NA, NA, NA, 178337
slope_1 = (178337 - 137862)/4
137862 + slope_1*1 # 1st NA replace with 147980.8
137862 + slope_1*2 # 2nd NA replace …Run Code Online (Sandbox Code Playgroud) 语境
我正在这个网站上学习整洁评估,我看到一个例子:
x <- sym("height")
expr(transmute(starwars, bmi = mass / (!! x)^2))
#> transmute(starwars, bmi = mass/(height)^2)
transmute(starwars, bmi = mass / (!! x)^2)
#> # A tibble: 87 x 1
#> bmi
#> <dbl>
#> 1 26.0
#> 2 26.9
#> 3 34.7
#> 4 33.3
#> # ... with 83 more rows
Run Code Online (Sandbox Code Playgroud)
sym然后,我在自己的代码中使用and模仿了上面的例子!!,但是报错了。
library(survival)
library(rms)
data(cancer)
x = sym('meal.cal')
expr(cph(Surv(time, status) ~ rcs(!! x), data = lung))
# cph(Surv(time, status) ~ rcs(meal.cal), data …Run Code Online (Sandbox Code Playgroud) 我想绘制这样的图片,但我不知道如何用 R 绘制它。我在这个网站上看到了一个教程,但这不是我需要的。它就像一个圆形条形图,不同之处在于,在下图中,每个条形都不是单个值,而是一个系列值,表示不同年份的不同发生率。
下图中是模板。
任何帮助将不胜感激!
我的假数据:
structure(list(year = c(2010, 2011, 2012, 2010, 2011, 2012, 2010,
2011, 2012, 2010, 2011, 2012), disease = c(1, 1, 1, 2, 2, 2,
3, 3, 3, 4, 4, 4), group = c("A", "A", "A", "A", "A", "A", "B",
"B", "B", "B", "B", "B"), incidence = c(0.2, 0.3, 0.4, 0.1, 0.3,
0.2, 0.5, 0.6, 0.7, 0.8, 0.9, 0.3)), row.names = c(NA, -12L), class = c("tbl_df",
"tbl", "data.frame"))
Run Code Online (Sandbox Code Playgroud)
我想定义一个函数,当我输入一个字符串作为协变量时,该函数会将我的字符串放在特定位置并将其转换为公式。我知道我的代码不正确,但我不知道如何编写。
我想要的是,当我输入covars <- "+s(time,bs= 'cr',fx=TRUE,k=7)"该函数时,该函数将添加covars到这样的公式中gam.model <- gam(cvd ~ pm10 +s(time,bs= 'cr',fx=TRUE,k=7), data = chicagoNMMAPS , family =poisson, na.rm=T)
library(dlnm) # use chicagoNMMAPS data
library(mgcv)
# define myfun
myfun <- function(covars){
covars <- covars
gam.model <- gam(cvd ~ pm10 + covars, data = chicagoNMMAPS , family =poisson, na.rm=T)
summary(gam.model)
}
myfun("+s(time,bs= 'cr',fx=TRUE,k=7)")
Run Code Online (Sandbox Code Playgroud)
myfun 应该这样做:
gam.model <- gam(cvd ~ pm10 + covars, data = chicagoNMMAPS , family =poisson, na.rm=T)
Run Code Online (Sandbox Code Playgroud) 我想使用intersect()两个字符向量,并且我可以使用 立即执行此操作intersect(names(mtcars), a)。但是当我使用管道时出现错误。
如何在intersect()R 中使用 dplyr 包中的管道。
library(tidyverse)
a = c('mpg', 'cyl')
intersect(names(mtcars), a) # run correctly
mtcars %>% intersect(x = names(.), y = a) # error occur
Run Code Online (Sandbox Code Playgroud)