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

R语言统计bars_by_foo字段文本频次并生成my.column列的方法

实现方案

方法1:纯基础R实现

在你现有代码的基础上,新增频次统计逻辑即可,完整可运行代码如下:

# 你原有预处理代码
data <- data.frame(foo=c(1, 1, 1, 2, 2, 3, 3, 3), bar=c('a', 'a', 'b', 'a', 'b', 'b', 'c', 'd'))
agg <- aggregate(bar~foo, data = data, paste0, collapse="")
df <- merge(data, agg, by = "foo", all = T)
colnames(df) <- c(colnames(data), "bars_by_foo")

# 新增my.column字段的逻辑
freq_stats <- tapply(data$bar, data$foo, function(x) {
  count_tb <- table(x)
  paste0(names(count_tb), "(", count_tb, ")", collapse = ", ")
})
freq_df <- data.frame(foo = as.integer(names(freq_stats)), my.column = freq_stats, row.names = NULL)
df <- merge(df, freq_df, by = "foo", all.x = TRUE)

# 查看结果
df

方法2:dplyr 实现(更简洁)

如果你习惯用tidyverse套件,分组后直接批量生成所需字段即可:

library(dplyr)

data <- data.frame(foo=c(1, 1, 1, 2, 2, 3, 3, 3), bar=c('a', 'a', 'b', 'a', 'b', 'b', 'c', 'd'))

df <- data %>%
  group_by(foo) %>%
  mutate(
    bars_by_foo = paste0(bar, collapse = ""),
    my.column = {
      count_tb <- table(bar)
      paste0(names(count_tb), "(", count_tb, ")", collapse = ", ")
    }
  ) %>%
  ungroup()

# 查看结果
df

两种方法运行后输出结果和你给出的预期格式完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.13 08:57:00