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

如何将宽格式数据集转长格式并保留原变量名?求可用函数

数据格式转换方案

你的源数据格式:

variable1variable2variable3
value1NANA
NAvalue2NA
NANAvalue3

目标是转成两列的长格式,以下是常用数据分析工具的实现方法:

R语言实现

方法1:使用tidyverse的pivot_longer

library(tidyverse)

# 构造示例数据(替换成你的数据集)
df <- tibble(
  variable1 = c("value1", NA, NA),
  variable2 = c(NA, "value2", NA),
  variable3 = c(NA, NA, "value3")
)

# 执行转换
df_long <- df %>%
  pivot_longer(
    cols = everything(), # 选择所有列
    names_to = "variable", # 原列名存入新列"variable"
    values_to = "value", # 原列值存入新列"value"
    values_drop_na = TRUE # 剔除含NA值的行
  )

方法2:使用reshape2的melt

library(reshape2)

df_long <- melt(df, na.rm = TRUE, variable.name = "variable", value.name = "value")

Python语言实现

方法1:使用pandas的melt

import pandas as pd
import numpy as np

# 构造示例数据(替换成你的数据集)
df = pd.DataFrame({
    'variable1': ['value1', np.nan, np.nan],
    'variable2': [np.nan, 'value2', np.nan],
    'variable3': [np.nan, np.nan, 'value3']
})

# 执行转换
df_long = df.melt(var_name='variable', value_name='value').dropna()

方法2:使用pandas的stack(更简洁)

df_long = df.stack().reset_index(name='value').rename(columns={'level_1': 'variable'})

以上方法都能直接得到你想要的目标格式:

variablevalue
variable1value1
variable2value2
variable3value3

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 17:54:26