R语言按日期筛选配对数据 计算体重与代谢率皮尔逊相关系数
解法1:tidyverse 实现(逻辑直观易读)
如果未安装tidyverse包,先运行install.packages("tidyverse")安装,再执行以下代码:
library(tidyverse) end_result <- data %>% # 长表转宽表,按日期分组,测试项作为列名,测试值作为填充值 pivot_wider(names_from = test, values_from = testvalue) %>% # 保留同时有体重和代谢率数据的行,自动丢弃孤立数据 filter(!is.na(weight), !is.na(`metabolic rate`)) %>% # 重命名列名匹配需求格式 rename(metabolic_rate = `metabolic rate`) %>% # 提取需要的两列 select(weight, metabolic_rate) # 运行皮尔逊相关性检验 cor.test(end_result$weight, end_result$metabolic_rate)
解法2:基础R实现(无需额外安装包)
# 筛选出同一天同时包含两项测试的有效日期 valid_days <- names(which(table(data$day) == 2)) valid_data <- data[data$day %in% as.Date(valid_days), ] # 配对提取两项测试值 weight <- valid_data$testvalue[valid_data$test == "weight"] metabolic_rate <- valid_data$testvalue[valid_data$test == "metabolic rate"] end_result <- data.frame(weight, metabolic_rate) # 运行皮尔逊相关性检验 cor.test(end_result$weight, end_result$metabolic_rate)
以上两种方法运行后得到的end_result完全符合你给出的目标数据集结构,会自动丢弃2007年的两条孤立测试数据。
内容的提问来源于stack exchange,提问作者Badboybørge
相关产品推荐
相关产品推荐

