R语言中删除每行首个"c"前单元格并生成新DataFrame
R语言实现:删除每行第一个"c"之前的单元格
首先构造示例数据框:
df <- data.frame( col1 = c("a", "c", "b"), col2 = c("b", "3", "c"), col3 = c("c", "4", "5"), col4 = c(1, "c", 6), col5 = c(2, 1, "c"), col6 = c("c", NA, 1), col7 = c(1, NA, NA), stringsAsFactors = FALSE )
核心实现代码
# 定义每行处理函数 process_row <- function(row) { # 定位该行第一个"c"的位置 first_c_idx <- which(row == "c")[1] # 处理无"c"的情况(返回5个NA) if (is.na(first_c_idx)) { return(rep(NA, 5)) } # 截取从第一个"c"开始的所有元素,统一长度为5(不足补NA) trimmed <- row[first_c_idx:length(row)] length(trimmed) <- 5 return(trimmed) } # 逐行处理并转换为数据框 result_df <- as.data.frame(t(apply(df, 1, process_row)), stringsAsFactors = FALSE) # 设置列名 colnames(result_df) <- paste0("col", 1:5)
结果验证
运行后result_df即为目标数据框:
> result_df col1 col2 col3 col4 col5 1 c 1 2 c 1 2 c 3 4 c 1 3 c 5 6 c 1
内容的提问来源于stack exchange,提问作者Andrés Ardila
相关产品推荐
相关产品推荐

