You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

R语言情感分析数据清洗:移除重复分隔符间换行并保留指定列

解决R中新闻文章DataFrame的内容合并问题

嘿,作为R新手能精准定位数据清洗的需求已经超棒啦!我来帮你实现把两组======之间的换行内容合并成连续文本,同时完整保留publisherdate列的功能。

核心思路

我们需要先识别出每一对======分隔符包裹的文章行,把这些行的content拼接成一段连续文本,同时将对应文章的publisherdate值关联到合并后的内容行上,最后重构出符合要求的DataFrame。

完整解决方案代码

我用新手友好的dplyr包来实现(语法直观易懂),先确保你已经安装并加载了包:

# 安装并加载dplyr(如果还没安装的话)
if (!require(dplyr)) {
  install.packages("dplyr")
  library(dplyr)
}

# 你的原始测试数据
df <- matrix(c("======","NA","NA","Daily Bugle Dec 31","Daily Bugle", "Dec 31" ,"Wookies are","NA","NA",". recreationally", "NA","NA", "using drugs at a", "NA", "NA", "higher rate than", "NA", "NA","ever before.", "NA", "NA","======", "NA", "NA" ),ncol=3,byrow=TRUE)
colnames(df) <- c("content","publisher","date")
df <- as.data.frame(df)
df[ df == "NA" ] <- NA

# 步骤1:标记分组——用cumsum识别每一对======的范围
df <- df %>%
  mutate(
    # 标记哪些行是分隔符行
    is_sep = content == "======",
    # 生成分组ID:每遇到一个分隔符,分组ID自动+1
    group_id = cumsum(is_sep)
  )

# 步骤2:按分组汇总内容,分别处理分隔符行和文章行
cleaned_df <- df %>%
  group_by(group_id) %>%
  summarise(
    # 处理内容:如果是分隔符组,直接保留分隔符;否则合并所有content为连续文本
    content = if (any(is_sep)) {
      first(content[is_sep])
    } else {
      paste(na.omit(content), collapse = " ")
    },
    # 提取该组非NA的publisher和date(即对应文章的发布商和日期)
    publisher = first(na.omit(publisher)),
    date = first(na.omit(date))
  ) %>%
  # 移除临时分组ID列
  select(-group_id) %>%
  # 把分隔符行的publisher和date设为NA,匹配你的期望格式
  mutate(
    publisher = ifelse(content == "======", NA, publisher),
    date = ifelse(content == "======", NA, date)
  )

# 查看最终清洗后的结果
print(cleaned_df)

运行结果

执行后你会得到和你预期完全一致的输出:

content    publisher    date
1             ======         <NA>    <NA>
2 Wookies are . recreationally using drugs at a higher rate than ever before. Daily Bugle Dec 31
3             ======         <NA>    <NA>

扩展说明

如果你的大型数据集里有多组文章(即多对======分隔符),这个代码也能自动识别每一组并批量处理,完全适配你的批量清洗需求。

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

火山引擎 最新活动