select 行基于 R 中另一行的值

select row based on value of another row in R

编辑:为了让自己清楚,我知道如何 select 单独的行,而且我知道有很多不同的方法可以做到这一点。我想编写一个无论行的实际值是多少都可以工作的代码,因此它可以在更大的数据帧上工作,也就是说,我不必根据内容更改代码。因此,不是说 select 第 1 行,然后是第 3 行,而是说,select 第一行,然后是行 [第 1 行 Z 列中的值],然后是行 [Z 列中的值,来自刚刚的行selected] 等等 - 所以我的问题是,如何告诉 R 将该值读取为行号

我正在尝试弄清楚如何 select 并根据另一行中的值保存一行,以便我获得第 1(aA) 行的新 df,然后转到行3 并保存 (cC),然后转到第 2 行等

X  Y  Z 

a  A  3
b  B  5
c  C  2
d  D  1
e  E  NA

知道行号后,我可以使用 rbind,它会给出以下内容

rbind(df[1, ], df[3, ]

a A 3
c C 2

但我希望 R 从列中提取数字 3,而不是明确告诉它要选择哪一行 - 我该怎么做? 谢谢

如果你知道你想要哪一行哪一列,你可以使用;

df <- read.table(textConnection('X  Y  Z 

a  A  3
b  B  5
c  C  2
d  D  1
e  E  NA'),
header=T)

desired_rows <- c('a','c')

df2 <- df[df$X %in% desired_rows,]

df2

输出;

  X     Y         Z
  <fct> <fct> <int>
1 a     A         3
2 c     C         2

您可以使用 while 循环继续选择行,直到出现 NA 或数据框中的所有行都被选中。

all_rows <- 1
next_row <- df$Z[all_rows]

while(!is.na(next_row) || length(all_rows) >= nrow(df)) {
  all_rows <- c(all_rows, next_row)
  next_row <- df$Z[all_rows[length(all_rows)]]
}

result <- df[all_rows, ]

#  X Y  Z
#1 a A  3
#3 c C  2
#2 b B  5
#5 e E NA