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

如何将多列分散数据合并到单列?求Excel及R实现方案

数据整理方案(Excel + R语言)

Excel 简易实现方案

方法1:LOOKUP函数快速提取

在空白单元格输入公式(根据实际数据范围调整行列):
=LOOKUP("Data", $A$1:$F$1, A2:F2)
下拉填充所有行,即可提取每行中"Data"对应的数值。
注:切换其他字段时,只需把公式里的"Data"替换成目标字段名(比如"Total supply")即可。

方法2:筛选复制法(适合小数据量)

  • 选中全部数据区域,按Ctrl+G打开定位对话框,选择「定位条件」→「常量」,确定后选中所有非NA内容;
  • 用筛选功能找出所有包含目标字段(如"Data")的单元格,选中其相邻的数值单元格,批量复制到目标单列;
  • 重复上述步骤处理"Total supply""Ticker"等其他字段。

R语言实现方案

假设你的原始数据框名为df,以下代码可实现批量提取指定字段的对应值:

单字段提取(以"Data"为例)

library(dplyr)
library(tidyr)

# 将宽表转为长表,过滤空值
df_long <- df %>%
  pivot_longer(cols = everything(), names_to = "col", values_to = "val") %>%
  filter(!is.na(val))

# 提取"Data"对应的数值
data_col <- df_long %>%
  group_by(grp = (row_number() - 1) %/% 2) %>%  # 按字段+数值分组
  filter(col == "Data" | lead(col) == "Data") %>%
  slice(2) %>%
  pull(val)

# 输出结果
data.frame(Data = data_col)

多字段批量提取(适配你的真实需求)

# 定义需要提取的目标字段
target_fields <- c("Total supply", "Ticker", "Accepted Currencies")

# 编写批量提取函数
extract_field <- function(field) {
  df_long %>%
    group_by(grp = (row_number() - 1) %/% 2) %>%
    filter(col == field | lead(col) == field) %>%
    slice(2) %>%
    pull(val)
}

# 合并所有字段的结果
final_result <- data.frame(
  lapply(target_fields, extract_field)
)
colnames(final_result) <- target_fields

# 查看最终结果
print(final_result)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 19:55:19