如何在R中重复索引列每行值三次并合并行去除NA值
解决方案
可以用dplyr和tidyr工具直接处理,两种思路供你选:
思路一:直接处理已生成的tweets2
library(dplyr) # 给每3行标记同一分组ID tweets_merged <- tweets2 %>% mutate(group_id = ceiling(index / 3)) %>% # 按分组聚合,每列取非NA值(每组同列仅一个非NA) group_by(group_id) %>% summarise(across(everything(), ~ .x[!is.na(.x)]), .groups = "drop") %>% # 删掉不需要的辅助列 select(-index, -group_id)
代码说明
ceiling(index / 3):把原index列每3个归为一组,比如1-3行的group_id为1,4-6行为2,以此类推。across(everything(), ~ .x[!is.na(.x)]):对每一列提取非NA值——因为你每组3行里同一列只有一个有效数据,直接取非NA项就能合并成完整行。
思路二:从原始tweets1直接生成目标结果(更高效)
如果tweets1还保留着,建议在转宽表前先分组,一步到位:
library(dplyr) library(tidyr) tweets_merged <- tweets1 %>% # 先给每3行标记分组 mutate(group_id = ceiling(row_number() / 3)) %>% # 转宽表时自动按分组合并,不会产生NA pivot_wider(names_from = "X1", values_from = "X2") %>% select(-group_id)
内容的提问来源于stack exchange,提问作者obothehobo
相关产品推荐
相关产品推荐

