You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R语言:如何合并person_list_df后按person_id求和并筛选count>4?

嘿,我来帮你搞定这个R数据处理的需求!针对你提到的合并求和+筛选的问题,我给你两种实现方案,一种用dplyr(代码更直观易读),另一种用基础R(不需要额外安装包)。

首先先确认你的初始数据结构:

person_list_df = list()
list1 <- data.frame("person_id" = 21:25, "count" = 2:6)
list2 <- data.frame("person_id" = 24:28, "count" = 3:7)
person_list_df <- list(list1, list2)

方案一:使用dplyr包(推荐)

如果还没安装dplyr,先运行install.packages("dplyr")安装。然后执行以下代码:

library(dplyr)

# 第一步:合并所有数据框,按person_id分组对count求和
summed_data <- bind_rows(person_list_df) %>%
  group_by(person_id) %>%
  summarize(total_count = sum(count, na.rm = TRUE)) %>%
  ungroup()

# 第二步:筛选出总和大于4的记录
filtered_data <- summed_data %>%
  filter(total_count > 4)

# 第三步:存入casesANDcontrols_df的第一个元素
casesANDcontrols_df <- list()
casesANDcontrols_df[[1]] <- filtered_data

运行后查看结果:

print(casesANDcontrols_df[[1]])

会得到你想要的输出:

# A tibble: 5 × 2
  person_id total_count
      <int>       <int>
1        24           8
2        25          10
3        26           5
4        27           6
5        28           7

方案二:使用基础R(无需额外包)

如果你不想加载第三方包,用基础R也能实现:

# 第一步:合并列表中的所有数据框
combined_data <- do.call(rbind, person_list_df)

# 第二步:按person_id分组求和count
summed_data <- aggregate(count ~ person_id, data = combined_data, FUN = sum)

# 第三步:筛选count总和大于4的记录
filtered_data <- summed_data[summed_data$count > 4, ]

# 第四步:存入目标列表
casesANDcontrols_df <- list()
casesANDcontrols_df[[1]] <- filtered_data

这个方案的输出和上面完全一致,只是用了基础R的函数来实现。

两种方案都能完美满足你的两个需求:合并后按person_id求和,再筛选出总和大于4的记录,并且把结果存入casesANDcontrols_df[[1]]中。

内容的提问来源于stack exchange,提问作者The Great

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.09 10:57:51