如何在R语言DataFrame中索引start与end之间的所有行?
提取R语言DataFrame中"start"与"end"之间的行
先确认你的DataFrame结构,运行你提供的代码后,z的内容如下:
a = c(1,1,1) b = c("start",2,2) c = c(3,3,3) d = c("end",4,4) z = data.frame(rbind(a,b,c,d)) print(z)
输出结果:
X1 X2 X3 a 1 1 1 b start 2 2 c 3 3 3 d end 4 4
要提取"start"和"end"之间的所有行,核心思路是先定位这两个标记的行号,再通过行索引截取中间部分:
具体步骤
- 定位"start"所在行的索引:
start_row <- which(z[, 1] == "start") - 定位"end"所在行的索引:
end_row <- which(z[, 1] == "end") - 提取两者之间的行(不包含"start"和"end"所在行):
middle_rows <- z[(start_row + 1):(end_row - 1), ]
运行后middle_rows的结果为:
X1 X2 X3 c 3 3 3
补充说明
如果DataFrame存在多个"start"或"end"标记,可按需调整:
- 取第一个"start"到第一个"end"之间的行:用
start_row <- which(z[,1] == "start")[1]和end_row <- which(z[,1] == "end")[1] - 若要包含"start"和"end"所在行,直接用
z[start_row:end_row, ]即可
内容的提问来源于stack exchange,提问作者ZT_Geo
相关产品推荐
相关产品推荐

