我有这样一个数据集:
row num Group
1 3 B
2 6 A
3 12 A
4 15 B
5 16 A
6 18 A
7 20 B
8 25 A
9 27 B
10 29 B
在R中,我希望将输入数字与num中的值进行比较,并且我希望仅在Group A中找到最接近的较大值的位置。
例如,如果输入数字为8,则组A中最接近的较大值应为12,我希望获得其位置,该位置应为3。如果输入数字为18,则返回值应为18,位置应为6。如果输入数字为20,则返回值应为25,位置应为8。
我尝试了which.min,但由于某种原因,无论输入编号是多少,总是返回索引1。
#called the dataset f
which.min(f$num[f$Group=="A"][f$num[f$Group=="A"]>=8])
我想仍然使用基地R,如果可能的话,我会感谢任何想法上的部分,我做错了,如何修复它。
- 谢谢-谢谢
3条答案
按热度按时间xzlaal3s1#
对于最接近的更大num,您可以用公式表示函数:
但是,在您的情况下,您甚至希望计算组。
kkbh8khc2#
使用
ifelse()
将不满足条件的元素替换为NA
,然后对生成的向量使用which.min()
:你的解不起作用的部分原因是,通过子集化,你改变了元素的位置,所以
which.min()
返回的位置与你的原始向量不对应。通过替换为NA
s,你保留了原始位置。ccrfmcuu3#
这里有两种方法
x1月0n1x日
基本R