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
编辑:为了让自己清楚,我知道如何 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