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

如何整理R数据集生成符合预期结构的规范dataframe

问题原因

你用na.omit()无效的原因是这个函数会直接删除所有包含NA值的行,你的数据集后两行A1到Gen1的列全为NA,会被直接过滤掉,自然拿不到预期结果。
你的数据集本质是把两类不同Group的指标合并到了同一条行记录里:前两行Group为A、D的记录中,B开头的列对应后两行Group为Q、B的A类指标,我们只要拆分数据再合并即可。


解决代码(tidyverse方案)

library(tidyverse)
# 提取Group为A、D的有效A类指标数据
part_a <- df %>% 
  filter(Group %in% c("A", "D")) %>% 
  select(Id, Name, Surname, Group, A1, A2, A3, Type1, Gen1)
# 提取前两行的B类指标,匹配Q、B两个Group,重命名列和上面对齐
part_b <- df %>% 
  filter(Group %in% c("A", "D")) %>% 
  select(Id, Name, Surname, B1, B2, B3, Type2, Gen2) %>% 
  mutate(Group = c("Q", "B")) %>% 
  rename(A1 = B1, A2 = B2, A3 = B3, Type1 = Type2, Gen1 = Gen2)
# 合并两部分得到最终结果
final_df <- bind_rows(part_a, part_b)

结果验证

输出final_df即可得到你需要的目标结构:

Id Name Surname Group A1 A2 A3 Type1 Gen1
1 116 Matt    Dabi     A  4  4  4    AB    N
2 116 Matt    Dabi     D  4  3  2     D    N
3 116 Matt    Dabi     Q  3  3  4     G    N
4 116 Matt    Dabi     B  4  3  2     G    N

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 21:27:03