R语言中如何将数据框下划线分隔的标注拆分为多行并保留原有信息?
解决方案:拆分DataFrame多行并保留原有字段
要解决这个将多物种标注拆分为单独行的问题,用tidyr包的separate_rows()函数最便捷,一步就能实现需求:
- 先安装并加载tidyr包(如果未安装的话):
install.packages("tidyr") library(tidyr)
- 执行拆分操作(替换
label为你实际的标注列名):
# 按下划线拆分标注列,同时保留其他所有列的信息 df_split <- separate_rows(df, label, sep = "_")
这个函数会自动把每个用下划线分隔的物种拆成单独的行,原行的时间间隔等其他字段会完整复制到拆分后的每一行,完全匹配你的需求。
你之前用的substr方法只能截取字符串的某一段生成新列,无法实现一行拆分为多行的效果,所以达不到预期。
如果不想依赖tidyr包,也可以用Base R实现:
# 拆分标注列得到包含多个元素的列表 split_labels <- strsplit(df$label, "_") # 重复其他列的数据,行数匹配拆分后的元素数量 df_base <- df[rep(seq(nrow(df)), sapply(split_labels, length)), -which(names(df) == "label")] # 添加拆分后的标注列 df_base$label <- unlist(split_labels)
内容的提问来源于stack exchange,提问作者lea_Amar
相关产品推荐
相关产品推荐

