小编zhi*_* li的帖子

计算具有通用名称模式的列组的逐行累积平均值

语境

我想在由列名称中的模式定义的不同列集上按行计算累积平均值。

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)

r dplyr

8
推荐指数
1
解决办法
424
查看次数

如何在r中的ggplot2中将多个变量与geom_smooth一起使用

就像标题一样,我想在我的模型中使用多个自变量。

有一个简单的例子:

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)

也许我没有映射hpggplot(aes())我尝试了这个,但发生了同样的错误:

mtcars %>% ggplot(aes(y = mpg, x = disp, z = hp)) +
  geom_point() + 
  geom_smooth(formula = y ~ x …
Run Code Online (Sandbox Code Playgroud)

r ggplot2

6
推荐指数
1
解决办法
1720
查看次数

如何使用r中的dplyr在特定位置插入空白行

我想在数据帧中的特定位置插入空白行。

我的数据框是这样的:

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)

r dplyr

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

如何用R中的线性模型单独替换NA

我查了一些网页(但他们的结果不符合我的需要):

我想写一个可以做到这一点的函数:

说有一个向量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, 178337178337, 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)

r dataframe dplyr

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

整洁的评估无法在 R 中的函数中工作

语境

我正在这个网站上学习整洁评估,我看到一个例子:

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 dplyr tidyeval rlang

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

如何使用 ggplot 在 r 中绘制变体圆形条形图

我想绘制这样的图片,但我不知道如何用 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)

在此处输入图片说明

plot r graph ggplot2

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

添加字符串作为具有定义函数的公式

我想定义一个函数,当我输入一个字符串作为协变量时,该函数会将我的字符串放在特定位置并将其转换为公式。我知道我的代码不正确,但我不知道如何编写。

我想要的是,当我输入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)

r formula mgcv

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

无法在 R 的 dplyr 包中使用“intersect()”中的管道

语境

我想使用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)

r dplyr

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

标签 统计

r ×8

dplyr ×5

ggplot2 ×2

dataframe ×1

formula ×1

graph ×1

mgcv ×1

plot ×1

rlang ×1

tidyeval ×1