在数据帧之间循环检查和存储最小值
Loop for checking and store min value, between dataframes
我有两个数据框。数据框 X 有 2 列 (k,l) 和 15 行。数据框 Y 有 1 行和相同的列。
X
k l
1 17455432 1
2 16590126 2
3 14090453 3
4 20538871 4
5 20935544 5
6 21896196 6
7 14173206 7
8 20193468 8
9 20751149 9
10 23956919 10
11 11295749 11
12 22356733 12
13 20005475 13
14 20035158 14
15 9602016 15
Y
k l
1
我想通过一个循环将 df X 中具有最小值 "k" 的行保存到 df Y 中。我试过了:
for (s in 1:15){
if (s==1){
Y=X[s,1:2]
}else{
if (X$k[s]>X$k[s-1]){
Y=X[s-1,1:2]
}
}
}
但这对我不起作用。如何每次检查值 k 并在 df Y 中保留最小值 k 的行?第一次迭代时,我的 Y 将是 X 的第一行,但随后我想将该值与前者进行比较,如果该值小于前者,则保留该行。
对于这个(以及许多其他)简单操作,R 中不需要任何循环。试试看:
Y<-X[which.min(X$k),]
# k l
#15 9602016 15
which.min
函数给出具有最小值的索引。您可以根据您的要求使用它来子集 X
。
我有两个数据框。数据框 X 有 2 列 (k,l) 和 15 行。数据框 Y 有 1 行和相同的列。
X
k l
1 17455432 1
2 16590126 2
3 14090453 3
4 20538871 4
5 20935544 5
6 21896196 6
7 14173206 7
8 20193468 8
9 20751149 9
10 23956919 10
11 11295749 11
12 22356733 12
13 20005475 13
14 20035158 14
15 9602016 15
Y
k l
1
我想通过一个循环将 df X 中具有最小值 "k" 的行保存到 df Y 中。我试过了:
for (s in 1:15){
if (s==1){
Y=X[s,1:2]
}else{
if (X$k[s]>X$k[s-1]){
Y=X[s-1,1:2]
}
}
}
但这对我不起作用。如何每次检查值 k 并在 df Y 中保留最小值 k 的行?第一次迭代时,我的 Y 将是 X 的第一行,但随后我想将该值与前者进行比较,如果该值小于前者,则保留该行。
对于这个(以及许多其他)简单操作,R 中不需要任何循环。试试看:
Y<-X[which.min(X$k),]
# k l
#15 9602016 15
which.min
函数给出具有最小值的索引。您可以根据您的要求使用它来子集 X
。