R Dataframe:如何统计截至某一位置的行数?
在R Dataframe中统计截至指定位置的行数
嘿,我来帮你搞定这个问题!根据你给出的示例数据,我会分几种常见场景来讲解怎么操作:
先构造示例Dataframe
首先咱们先把你提供的示例数据转换成R的Dataframe,方便后续演示:
df <- data.frame( ID = 1:15, Time = c(rep("Saturday Evening", 3), rep("Sunday Evening", 6), rep("Saturday Night", 4), rep("Sunday Night", 2)), Value1 = c(16.2,23.4,29.4,24.2,24.2,24.2,24.2,25.4,26.8,25.6,24.4,24.4,24.4,25.2,25.2), Value2 = c(235.84,235.29,232.79,233.89,233.66,233.38,232.99,233.21,232.37,231.55,231.19,231.63,231.71,231.23,231.23) )
场景1:已知具体行号,统计截至该行的行数
如果已经明确知道要截至哪一行(比如第8行),那这个行数其实就是行号本身,直接用就行:
target_row <- 8 target_row # 结果就是8,也就是截至第8行的总行数
要是你想验证一下,也可以用切片后统计行数的方式:
nrow(df[1:target_row, ]) # 同样返回8
场景2:根据条件找到目标位置,统计截至该行的行数
比如你想找到最后一行Saturday Evening,然后统计截至这一行的总行数,操作如下:
# 找到所有符合"Saturday Evening"的行的索引,取最大值就是最后一行的位置 last_sat_evening <- max(which(df$Time == "Saturday Evening")) last_sat_evening # 结果是3,也就是截至最后一行周六傍晚的总行数
要是找第一个符合条件的行(比如第一行Sunday Night):
first_sun_night <- min(which(df$Time == "Sunday Night")) first_sun_night # 结果是14,也就是截至第一行周日夜晚的总行数
场景3:根据自定义行名找到目标位置,统计截至该行的行数
如果你的Dataframe用了自定义行名(比如把ID列设为行名):
rownames(df) <- df$ID
那如果指定行名为"9",可以这样找到截至该行的行数:
target_row_name <- "9" # 找到该行对应的索引 row_index <- which(rownames(df) == target_row_name) row_index # 结果是9,也就是截至该行名对应行的总行数
总的来说,核心思路就是先找到目标位置对应的行索引,这个索引值就是从Dataframe开头到该位置的总行数啦~
内容的提问来源于stack exchange,提问作者John Kim
相关产品推荐
相关产品推荐

