R语言 同一数据集上的3个每周样本和1个每周指标-1个值可以代表3行吗?

bq3bfh9z  于 2023-09-27  发布在  其他
关注(0)|答案(1)|浏览(96)

我有每周测量3个浓度的数据。我有另一个数据集来衡量一周的住院情况。模拟数据如下所示。

df <- data.frame(Date = as.Date(c("2023-01-02", "2023-01-03", "2023-01-04", "2023-01-09", "2023-01-10", "2023-01-11")),
                 Concentration = c(.05, .04, .08, 1.2, 1.3, 1.3),
                 Weekly_Count = lubridate:::week(c("2023-01-02", "2023-01-03", "2023-01-04", "2023-01-09", "2023-01-10", "2023-01-11")))
df

        Date Concentration Weekly_Count
1 2023-01-02          0.05            1
2 2023-01-03          0.04            1
3 2023-01-04          0.08            1
4 2023-01-09          1.20            2
5 2023-01-10          1.30            2
6 2023-01-11          1.30            2 


df2 <- data.frame(Weekly_Count = c(1, 2),
                  hospitalizations = c(12, 23)) 
df2

  Weekly_Count hospitalizations
1            1               12
2            2               23

我遇到的问题是,我需要住院治疗值12来代表一周内收集的所有3个样本-我需要弄清楚如何将weekly_count为1的所有值指定为12次住院治疗。我通过Weekly_Count变量合并了两个 Dataframe ,但它在每个单独的浓度上添加了12,这对于一周的总住院人数来说是一个不正确的值。有没有一种方法可以保留单个测量值,以某种方式按weekly_count变量分组,并使住院周数代表所有测量值?这些数据将被输入到随机森林模型中,如果这将指导它应该采取的结构。

juzqafwq

juzqafwq1#

每周3个样本中的每一个都可以存储在其自己的列中,保留单个测量值及其日期,但每周仅使用一行。然后可以将结果与df2合并以添加附加度量。使用库data.table和tidyr:

library(data.table)
library(tidyr)

# Convert to data.table
setDT(df)

# Add a column with measurement number
df[, measurement_number := 1:.N, by = .(Weekly_Count)]

# Pivot measurements and dates
df.wide <- pivot_wider(df, names_from="measurement_number", values_from = c("Concentration","Date"))

# Merge with df2
df.result <- merge(df.wide,df2,by="Weekly_Count")

df.result

  Weekly_Count Concentration_1 Concentration_2 Concentration_3     Date_1     Date_2     Date_3 hospitalizations
1            1            0.05            0.04            0.08 2023-01-02 2023-01-03 2023-01-04               12
2            2            1.20            1.30            1.30 2023-01-09 2023-01-10 2023-01-11               23

3个每周样本现在存储在df.result中,每周指标住院治疗只有一个值。

相关问题