gpt4 book ai didi

r - 如何操作 R 中的配对数据集?

转载 作者:行者123 更新时间:2023-12-04 10:14:25 25 4
gpt4 key购买 nike

我的数据看起来像这样(简化版):

df <- read.table(text="cohort,med1,med2,med3,meq1,meq2,meq3
a,drugA,drugB,NA,4.3,1.9,NA
b,drugB,drugC,drugA,2.1,2.0,4.5
a,drugC,NA,NA,2.0,NA,NA
a,drugA,drugB,NA,5.5,3.6,NA
b,drugB,drugA,drugC,4.9,4.1,4.1", sep=",", header=TRUE)

## > df
## cohort med1 med2 med3 meq1 meq2 meq3
## 1 a drugA drugB <NA> 4.3 1.9 NA
## 2 b drugB drugC drugA 2.1 2.0 4.5
## 3 a drugC <NA> <NA> 2.0 NA NA
## 4 a drugA drugB <NA> 5.5 3.6 NA
## 5 b drugB drugA drugC 4.9 4.1 4.1

每个 med值与 meq 中的每一个配对值(例如 meq1 的值是该实例的值 med1 )。如何重组要按 med 分组的数据来自 cohort并获得 med 的计数和 meq 的平均值?

例如:
cohort  med    meq
a drugA 4.9
a drugB 2.75
a drugC 2.0
b drugA 4.3
b drugB 4.5
b drugC 3.05

最佳答案

这是一个 tidyr道路:

library(dplyr)
library(tidyr)
df <- read.table(text ="
cohort med1 med2 med3 meq1 meq2 meq3
a drugA drugB NA 4.3 1.9 NA
b drugB drugC drugA 2.1 2.0 4.5
a drugC NA NA 2.0 NA NA
a drugA drugB NA 5.5 3.6 NA
b drugB drugA drugC 4.9 4.1 4.1
", header = TRUE)

df_long <- df %>%
pivot_longer(cols = starts_with("me"),
names_to = c(".value", "m"),
names_pattern = "(me(?:d|q))(\\d)")

第一步对每行的多个观察进行分组(针对 1、2 和 3 中的每一个的 med 和 meq)

print(df_long)
#> # A tibble: 15 x 4
#> cohort m med meq
#> <fct> <chr> <fct> <dbl>
#> 1 a 1 drugA 4.3
#> 2 a 2 drugB 1.9
#> 3 a 3 <NA> NA
#> 4 b 1 drugB 2.1
#> 5 b 2 drugC 2
#> 6 b 3 drugA 4.5
#> 7 a 1 drugC 2
#> 8 a 2 <NA> NA
#> 9 a 3 <NA> NA
#> 10 a 1 drugA 5.5
#> 11 a 2 drugB 3.6
#> 12 a 3 <NA> NA
#> 13 b 1 drugB 4.9
#> 14 b 2 drugA 4.1
#> 15 b 3 drugC 4.1

然后我们可以取每个队列的每种药物的平均值:

df_long %>%
group_by(cohort, med) %>%
summarize(meq = mean(meq))
#> Warning: Factor `med` contains implicit NA, consider using
#> `forcats::fct_explicit_na`
#> # A tibble: 7 x 3
#> # Groups: cohort [2]
#> cohort med meq
#> <fct> <fct> <dbl>
#> 1 a drugA 4.9
#> 2 a drugB 2.75
#> 3 a drugC 2
#> 4 a <NA> NA
#> 5 b drugA 4.3
#> 6 b drugB 3.5
#> 7 b drugC 3.05

创建于 2020-04-10 由 reprex package (v0.3.0)

关于r - 如何操作 R 中的配对数据集?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61143627/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com