标签: tidyverse

使用扫帚和tidyverse对不同的因变量运行回归

我正在寻找可以解决这个难题的Tidyverse /扫帚解决方案:

假设我有不同的DV和一组特定的IVS,我想进行回归,考虑每个DV和这组特定的IV.我知道我可以使用像我这样的东西或应用家庭,但我真的想用tidyverse来运行它.

以下代码作为示例

ds <- data.frame(income = rnorm(100, mean=1000,sd=200),
                 happiness = rnorm(100, mean = 6, sd=1),
                 health = rnorm(100, mean=20, sd = 3),
                 sex = c(0,1),
                 faculty = c(0,1,2,3))

mod1 <- lm(income ~ sex + faculty, ds)
mod2 <- lm(happiness ~ sex + faculty, ds)
mod3 <- lm(health ~ sex + faculty, ds)
summary(mod1)
summary(mod2)
summary(mod3)
Run Code Online (Sandbox Code Playgroud)

收入,幸福和健康都是DV.性别和教师是IV,他们将用于所有回归.

是我发现的最接近的

让我知道如果我需要澄清我的问题.谢谢.

loops regression r broom tidyverse

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

为同一 ggplot 中使用的不同 data.frames 手动添加额外的图例

在我下面的图中,我有两个单独的data(datdat2)源,用于两个不同的geom_smooth()调用,生成黑色和红色回归线(见下图)。

是否可以手动添加另一个legend显示调用黑线"Between"和调用红线的方法"Within"

library(tidyverse)

dat <- read.csv('https://raw.githubusercontent.com/rnorouzian/e/master/cw2.csv')
dat$groups <- factor(dat$groups)

dat2 <- dat %>% group_by(groups) %>% summarize(mean_x = mean(x),
                                               mean_y = mean(y),
                                               .groups = 'drop')
dat %>% 
  ggplot() +
  aes(x, y, color = groups, shape = groups)+
  geom_point(size = 2) + theme_classic()+ 
  stat_ellipse(level = .6) +
  geom_point(data = dat2, 
             mapping = aes(x = mean_x, y = mean_y,fill = factor(groups)),
             size = 4, show.legend = F,shape=21) …
Run Code Online (Sandbox Code Playgroud)

plot r ggplot2 dataframe tidyverse

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

累积 R 中每个可能组合的值

假设我有数据test(给定的 dput),其中 list-col 说items

test <- structure(list(items = list('a', c('b', 'c'), c('d', 'e'), 'f', c('g', 'h')),
               ID = c(1,1,1,2,2)), row.names = c(NA, 5L), class = "data.frame")

library(tidyverse)
test %>% group_by(ID) %>%
  mutate(dummy = accumulate(items, ~paste(.x, .y)))
Run Code Online (Sandbox Code Playgroud)

我得到一个像这样的 list-col 输出

  items ID        dummy
1     a  1            a
2  b, c  1     a b, a c
3  d, e  1 a b d, a c e
4     f  2            f
5  g, h  2     f g, f h …
Run Code Online (Sandbox Code Playgroud)

expand r dataframe accumulate tidyverse

9
推荐指数
4
解决办法
532
查看次数

使用 R 中的 tidyverse 重新调整因子和重新排序因子

我想在我的数据框中使用函数relevel()reorder() 。我了解重新调整级别的工作原理,但我不明白为什么我在 data.frame 中看不到级别的变化。例如,假设我有鸢尾花数据集。

library(tidyverse)

head(iris)
#>   Sepal.Length Sepal.Width Petal.Length Petal.Width Species
#> 1          5.1         3.5          1.4         0.2  setosa
#> 2          4.9         3.0          1.4         0.2  setosa
#> 3          4.7         3.2          1.3         0.2  setosa
#> 4          4.6         3.1          1.5         0.2  setosa
#> 5          5.0         3.6          1.4         0.2  setosa
#> 6          5.4         3.9          1.7         0.4  setosa


iris$Species <- factor(iris$Species, levels = c("versicolor","setosa","virginica"), 
                       labels = c("versicolor","setosa","virginica"))
Run Code Online (Sandbox Code Playgroud)

由reprex 包于 2022 年 4 月 12 日创建(v2.0.1)

我可以使用此函数来更改级别的顺序或 dplyr 中的此函数:

iris …
Run Code Online (Sandbox Code Playgroud)

r dplyr tidyverse forcats

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

如何按行汇总多列中的前 n 个值?

在我的数据框中,我有多列包含学生成绩。我想对“测验”列进行求和(例如测验1、测验2)。但是,我只想对前 2 个值求和,而忽略其他值。我想创建一个包含总计(即前 2 个值的总和)的新列。

\n

一个问题是,有些学生的成绩与给定行中的前 2 名成绩并列。例如,Aaron 的得分很高,为 42,但随后有两个得分并列第二高(即 36)。

\n

数据

\n
df <- \n  structure(\n  list(\n    Student = c("Aaron", "James", "Charlotte", "Katie", "Olivia", \n                "Timothy", "Grant", "Chloe", "Judy", "Justin"),\n    ID = c(30016, 87311, 61755, 55323, 94839, 38209, 34096, \n           98432, 19487, 94029),\n    Quiz1 = c(31, 25, 41, 10, 35, 19, 27, 42, 15, 20),\n    Quiz2 = c(42, 33, 34, 22, 23, 38, 48, 49, 23, 30),\n    Quiz3 = c(36, 36, 34, 32, 43, 38, 44, 42, …
Run Code Online (Sandbox Code Playgroud)

r tidyverse

9
推荐指数
2
解决办法
1083
查看次数

R 中发现的任何错误都会响应 Error in app$vspace(new_style$`margin-top` %||% 0) : attempts to apply non-function

老实说,我不知道如何使其可重现。使用 tidyverse 在 R 中发生的任何错误都会抛出:

Error in app$vspace(new_style$`margin-top` %||% 0) : 
  attempt to apply non-function
Run Code Online (Sandbox Code Playgroud)

还有其他人看过这个吗?

编辑:这是 sessionInfo() 输出:

R version 4.0.4 (2021-02-15)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows 10 x64 (build 18363)

Matrix products: default

locale:
[1] LC_COLLATE=English_United Kingdom.1252  LC_CTYPE=English_United Kingdom.1252    LC_MONETARY=English_United Kingdom.1252 LC_NUMERIC=C                           
[5] LC_TIME=English_United Kingdom.1252    

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
 [1] rstatix_0.7.0   plotly_4.10.0   ggpubr_0.4.0    forcats_0.5.1   stringr_1.4.0   dplyr_1.0.4     purrr_0.3.4     readr_2.1.2     tidyr_1.2.0     tibble_3.0.6   
[11] ggplot2_3.3.5   tidyverse_1.3.1

loaded via a namespace …
Run Code Online (Sandbox Code Playgroud)

r tidyverse

9
推荐指数
0
解决办法
2万
查看次数

在r中制作图表地图?

这是我的数据框:

df:

Country          Total       lon        lat
United Kingdom   5000       -3.43597    55.37805
China            4000       104.1954    35.86166
France           4000       2.213749    46.22764
Australia        4500       133.7751    -25.2744
Mexico           0          -102.553    23.6345
Run Code Online (Sandbox Code Playgroud)

我是 R 新手。我正在尝试制作一张地图,显示从许多不同国家到墨西哥的旅行。目的地是墨西哥,因此所有数据流都将朝一个方向流动。我不知道如何建立国家之间的联系。我使用以下代码来制作布局:



world <- ne_countries(scale = "medium", returnclass = "sf")
class(world)
new_df <- read.csv('df.csv')
ggrepel::geom_label_repel

ggplot(data = world) +
  geom_sf()+geom_point(data=new_df, aes(x=lon, y=lat), colour='red')+
  ggrepel::geom_label_repel(data = new_df, 
                            aes(x = lon, y = lat), 
                            label = new_df$Country,
                            size = 2,
                            col = "blue")
Run Code Online (Sandbox Code Playgroud)

r ggplot2 dataframe tidyverse r-sf

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

r:tidyverse:如何使用输入最少的管道更改列数据类型

管道和tidyverse有时非常方便.用户想要将一列从一种类型转换为另一种类型.

像这样:

mtcars$qsec <-as.integer(mtcars$qsec)
Run Code Online (Sandbox Code Playgroud)

这需要输入我需要的两倍.请不要建议使用"with"命令,因为我觉得它使用起来很混乱.

什么是tidyverse和magrittr%<>%的方式以最少的打字量做同样的事情?另外,如果qsec是第6列,我该怎么做才引用列位置.像(不正确的代码)

mtcars %<>% mutate(as.integer,qsec)
mtcars %<>% mutate(as.integer,[[6]])
Run Code Online (Sandbox Code Playgroud)

r pipe tidyverse

8
推荐指数
3
解决办法
9514
查看次数

如何使用 Tidyr 在 Tidyverse 中转置 (t)

使用示例数据(底部),我想使用下面的代码对数据进行分组和汇总。在此之后,我想转置,但我被困在如何使用 tidyr 来实现这一点?

对于上下文,我试图重新创建一个使用 knitr::kable 在 Excel 中创建的现有表,因此我的以下代码的最终产品预计会破坏整洁原则。

例如:

library(tidyverse)

Df <- Df %>% group_by(Code1, Code2, Level) %>%
    summarise_all(funs(count = sum(!is.na(.))))
Run Code Online (Sandbox Code Playgroud)

我可以使用管道添加 t(.) ...

Df <- Df %>% group_by(Code1, Code2, Level) %>%
    summarise_all(funs(count = sum(!is.na(.)))) %>%
    t(.)
Run Code Online (Sandbox Code Playgroud)

或者我可以添加...

Df <- as.data.frame(t(Df)
Run Code Online (Sandbox Code Playgroud)

这两个选项都允许我转置,但我想知道是否有使用 tidyrgatherspread函数实现这一目标的 tidyverse 方法?我想对这个过程有更多的控制,还想删除“V1”、“V2”等,它们在使用转置 ( t)时显示为列名。

如何使用 tidyverse 实现这一目标?

示例代码:

Code1 <- c("H200","H350","H250","T400","T240","T600")
Code2 <- c("4A","4A","4A","2B","2B","2B")
Level <- c(1,2,3,1,2,3)
Q1 <- c(30,40,40,50,60,80)
Q2 <- c(50,30,50,40,80,30)
Q3 <- c(30,45,70,42,81,34)

Df <- data.frame(Code1, Code2, Level, Q1, …
Run Code Online (Sandbox Code Playgroud)

r dplyr tidyr tidyverse

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

按名称删除列表中的元素

我有一个名为长名单的工作,我试图保持符合特定名称/删除元素,一个tidyverse范围内,类似

dplyr::select(contains("pattern"))
Run Code Online (Sandbox Code Playgroud)

但是,我在解决问题上遇到了问题。

library(tidyverse)

a_list <- 
  list(a = "asdfg",
       b = "qwerty",
       c = "zxcvb")

a_list %>% pluck("a") # works
a_list %>% pluck(contains("a")) #does not work

a_list[2:3] # this is what I want
a_list %>% pluck(-"a") # but this does not work
Run Code Online (Sandbox Code Playgroud)

r tidyverse

8
推荐指数
5
解决办法
3881
查看次数

标签 统计

r ×10

tidyverse ×10

dataframe ×3

dplyr ×2

ggplot2 ×2

accumulate ×1

broom ×1

expand ×1

forcats ×1

loops ×1

pipe ×1

plot ×1

r-sf ×1

regression ×1

tidyr ×1