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

如何拆分出包含Cohort与列名的独立DataFrame?

解决方法

方法一:使用tidyverse工具(推荐)

利用tidyr的pivot_longer函数可以更直观地完成宽格式到长格式的转换,直接得到你需要的结构:

library(tidyverse)

# 提取Cohort行、转换格式并筛选目标样本
cohort_df <- data %>%
  filter(symbol == "Cohort") %>%
  pivot_longer(cols = -symbol, names_to = "symbol", values_to = "Cohort") %>%
  select(symbol, Cohort) %>%
  filter(symbol %in% c("sample1", "sample2"))

运行后得到的cohort_df就是你期望的结果:

symbolCohort
sample10
sample21

方法二:基础R实现

如果不想加载额外包,用基础R也能完成:

# 提取Cohort行,排除symbol列后转置
cohort_t <- t(data[data$symbol == "Cohort", -1])
# 转换为数据框并设置列名
cohort_df <- as.data.frame(cohort_t, stringsAsFactors = FALSE)
colnames(cohort_df) <- "Cohort"
# 添加样本名作为symbol列,调整列顺序
cohort_df$symbol <- rownames(cohort_df)
cohort_df <- cohort_df[, c("symbol", "Cohort")]
# 筛选需要的样本并重置行名
cohort_df <- cohort_df[cohort_df$symbol %in% c("sample1", "sample2"), ]
rownames(cohort_df) <- NULL

原代码问题说明

你之前的代码把包含symbol列的整行转置了,导致结果里多了symbol | Cohort这一行,且默认列名为V1。核心问题是转置时没有排除symbol列,同时转置后没有正确设置列名和过滤冗余行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 04:52:34