基于Region列修改DataFrame:为!UK行添加House内容新行
解决方案
可以借助tidyverse工具集实现需求,核心思路是识别符合条件的行并生成复制记录,再合并到原数据集中:
完整实现代码
library(tidyverse) # 原始数据 df <- tibble(Region = c("AU","USA","CA","USA","!UK","AU","USA","CA","!UK"), lock = c(1,1,NA,1,NA,1,NA,1,NA), type= c("sale",NA,NA,"target","target",NA,"sale",NA,"target"), House =c("Tagore house","Gandhi house",NA,"Flexible;Tagore house;Gandhi house","Tagore house",NA,"Flexible;Gandhi house","Gandhi house","Gandhi house")) # 处理逻辑:筛选符合条件的行并复制,再与原数据合并 df_processed <- df %>% # 筛选出需要新增行的记录并复制 bind_rows( df %>% filter(Region == "!UK" & !is.na(House)) ) %>% # 可选:按原始顺序重新排序(如需保留原行在前、新增行在后的顺序) arrange(match(row_number(), c(1:nrow(df), which(df$Region == "!UK" & !is.na(df$House))))) # 查看处理后的结果 print(df_processed)
代码说明
- 筛选并复制目标行:用
filter()找出Region为!UK且House非空的记录,通过bind_rows()将这些复制记录追加到原数据后 - 可选排序:如果需要保持原行在前、对应新增行紧跟其后的顺序,用
arrange()结合match()还原排序逻辑
运行后,原数据中第5、9两行(符合Region="!UK"且House非空的条件)会各新增一条完全相同的记录,其余行保持不变。
内容的提问来源于stack exchange,提问作者potro
相关产品推荐
相关产品推荐

