如何整理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
相关产品推荐
相关产品推荐

