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

如何将R语言data数据框转换为new_data?已试pivot_longer和pivot_wider未果

解决方案

可以通过pivot_longer配合pivot_wider完成转换,步骤如下:

1. 加载tidyverse包

如果未安装包,先执行安装:

install.packages("tidyverse")

加载包:

library(tidyverse)

2. 执行转换

# 原数据
data <- data.frame(
  ind = c("la", "lb", "lc"),
  c1 = c(1, 2, 3),
  c2 = c(4, 5, 6),
  c3 = c(7, 8, 9),
  c4 = c(10, 11, 12)
)

# 转换流程
new_data <- data %>%
  # 将c1-c4列转为长格式,列名存入new_ind,对应值存入value
  pivot_longer(cols = c(c1, c2, c3, c4), names_to = "new_ind", values_to = "value") %>%
  # 将原ind列的内容转为新列名,用value填充对应值
  pivot_wider(names_from = ind, values_from = value) %>%
  # 重命名列并调整顺序
  rename(ind = new_ind) %>%
  select(ind, la, lb, lc)

3. 验证结果

运行代码后,new_data结构与预期一致:

> new_data
  ind la lb lc
1  c1  1  2  3
2  c2  4  5  6
3  c3  7  8  9
4  c4 10 11 12

另一种base R方法

若不想使用tidyverse,可通过转置实现:

new_data <- as.data.frame(t(data[, -1]))
colnames(new_data) <- data$ind
new_data$ind <- rownames(new_data)
rownames(new_data) <- NULL
new_data <- new_data[, c("ind", "la", "lb", "lc")]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 09:07:25