如何在R数据帧的每个类别中提取最接近某个值的值?
在数据分析中,我们经常处理值的比较,并且在找到最接近某个值(可能是阈值)的最接近值之后也可以进行此比较。为此,我们可以将dplyr包的过滤器函数与abs和min函数一起使用,需要abs和min函数来创建用于查找最接近值的公式。
考虑以下数据帧-
示例
Category<-sample(LETTERS[1:3],20,replace=TRUE)输出结果Y<-rpois(20,2)
df1<-data.frame(Category,Y)
df1
Category Y1 C 2
2 B 1
3 C 1
4 B 3
5 B 0
6 C 1
7 C 3
8 A 3
9 B 3
10 C 1
11 A 0
12 B 2
13 A 2
14 B 3
15 B 0
16 B 5
17 B 4
18 C 4
19 B 2
20 A 0
加载dplyr软件包,并在每个类别的Y列中找到最接近5的值-
示例
library(dplyr)输出结果df1%>%group_by(Category)%>%filter(abs(Y-5)==min(abs(Y-5)))
# A tibble: 3 x 2
# Groups: Category [3]
Category Y<chr> <int>
1 A 3
2 B 5
3 C 4
示例
Class<-sample(c("I","II","III"),20,replace=TRUE)输出结果Y<-rnorm(20)
df2<-data.frame(Class,Y)
df2
Class Y1 III 0.8489651
2 I 0.1588493
3 II -0.4598459
4 I 0.5460653
5 I -1.2462101
6 II -1.1553006
7 III 0.1208797
8 I -0.8272769
9 III -0.1296539
10 III 0.4404777
11 I -1.4512669
12 I -0.1486225
13 II 0.8484109
14 II 0.9099450
15 I 0.6118836
16 III -1.5100937
17 II -2.0682287
18 III 0.1454986
19 III -1.9322351
20 I 0.8039917
在每个类的Y列中找到最接近0.2的值-
示例
df2%>%group_by(Class)%>%filter(abs(Y-0.2)==min(abs(Y-0.2)))输出结果# A tibble: 3 x 2
# Groups: Class [3]
Class Y<chr> <dbl>
1 I 0.159
2 II 0.848
3 III 0.145
以上是 如何在R数据帧的每个类别中提取最接近某个值的值? 的全部内容, 来源链接: utcz.com/z/320127.html