大佬教程收集整理的这篇文章主要介绍了创建函数以使用来自 R 中不同列表的列表元素生成新值,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个 19000 x 20 的数据帧,我需要根据桶进行拆分(总共有 5 个桶),然后根据每个桶的对照的平均值和标准差为所有患者生成分数。到目前为止,我已经找到了如何拆分数据并基于使用列表的桶为控件生成均值和标准差的方法,但似乎无法找到生成新分数的最佳方法。
原始数据框
row_number age length bucket
1 1 11 31 2
2 2 14 30 3
3 3 12 25 3
4 4 13 26 5
5 5 15 19 4
6 6 12 56 1
7 7 17 45 4
8 8 15 31 1
9 9 14 24 5
10 10 16 36 1
@H_874_10@
根据所有患者的桶将数据拆分为列表
allpatIEnts <- split(x = df,f = df$bucket)
# Example data for bucket 1
row_number age length bucket
1 6 12 56 1
2 8 15 31 1
3 10 16 36 1
@H_874_10@
这会生成一个包含存储桶 1 到 5 的列表元素的列表,每个存储桶的数据帧如存储桶 1 示例所示。
计算健康患者每个桶的平均值
# Function for mean
func_mean <- function(data){
bucket_mean <- data %>%
SELEct(age:length)
bucket_mean <- lapply(bucket_mean,mean)
bucket_mean <- as.data.frame(bucket_mean)
}
# Apply mean function to List
healthypatIEnts_mean <- map(healthypatIEnts,func_mean)
# Example data for bucket 1
age length
14 41
@H_874_10@
这会生成一个元素列表,这些元素分别为从 1 到 5 的每个桶的年龄和长度均值,如桶 1 的示例所示。
从健康患者中获取每个桶的 sd
# Function
func_sd <- function(data){
bucket_sd <- data %>%
SELEct(age:length)
bucket_sd <- lapply(bucket_sd,sd)
bucket_sd <- as.data.frame(bucket_sd)
}
# Apply sd function to List
healthypatIEnts_sd <- map(healthypatIEnts,func_sd)
# Example (dummy) data for bucket 1
age length
2 4
@H_874_10@
这会为从 1 到 5 的每个存储桶生成一个元素列表,其中 sd 分别表示年龄和长度,如存储桶 1 的示例所示。
根据健康患者的均值和标准差计算所有患者的分数
我想根据存储桶计算列表元素每一行的新分数。本质上,对于一个桶的年龄和长度的每个值:
(allpatIEnts - healthypatIEnts_mean)/healthypatIEnts_sd@H_874_10@ 每个桶
例如,bucket 1 的最终数据应如下所示:
row_number age length bucket
1 6 -1 3.75 1
2 8 0.5 -2.5 1
3 10 1 -1.25 1
@H_874_10@
我想我将不得不创建一个函数并可能使用 {purr},但我不确定如何从 healthypatIEnts_mean@H_874_10@ 和
healthypatIEnts_sd@H_874_10@ 获取输出来为
allpatIEnts@H_874_10@ 生成新分数基于每个桶。感谢您的帮助!
您不一定需要在此处为每个 bucket@H_874_10@ 拆分数据集。我们可以使用
group_by@H_874_10@ 分别处理每个桶。
library(dplyr)
healthypatients %>%
group_by(bucket) %>%
summarise(across(c(age,length),list(mean = mean,sd = sd))) %>%
left_join(df,by = 'bucket') %>%
mutate(length_score = (length - length_mean)/length_sd,age_score = (age - age_mean)/age_sd)
@H_874_10@
以上是大佬教程为你收集整理的创建函数以使用来自 R 中不同列表的列表元素生成新值全部内容,希望文章能够帮你解决创建函数以使用来自 R 中不同列表的列表元素生成新值所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。