如何在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 Y

1  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     Y

1  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

回到顶部