如何在 r 中使用 %in% 运算符(附示例)


R 中的%in%运算符允许您确定元素是否属于向量或数据框。

本教程提供了在不同场景中使用此功能的三个示例。

示例 1:将 %in% 与向量一起使用

我们可以使用%in%运算符来确定一个向量中有多少元素属于另一个向量:

 #define two vectors of data
data1 <- c(3, 5, 7, 7, 14, 19, 22, 25)

data2 <- c(1, 2, 3, 4, 5)

#produce new vector that contains elements of data1 that are in data2
data1[data1 %in% data2]

[1] 3 5

我们可以看到,值35是标记为data2 的向量中唯一位于标记为data1的向量中的元素。

示例2:使用%in%过滤数据帧

我们还可以使用%in%运算符来过滤数据框中包含某些值的行:

 #define data frame
df <- data.frame(team=c('A', 'A', 'B', 'B', 'B', 'C'),
                 points=c(67, 72, 77, 89, 84, 97),
                 assists=c(14, 16, 12, 22, 25, 20))

#view data frame
df

  team points assists
1 A 67 14
2 A 72 16
3 B 77 12
4 B 89 22
5 B 84 25
6 C 97 20

#produce new data frame that only contains rows where team is 'B'
df_new <- df[df$team %in% c(' B '), ]
df_new

  team points assists
3 B 77 12
4 B 89 22
5 B 84 25

#produce new data frame that only contains rows where team is 'B' or 'C'
df_new2 <- df[df$team %in% c(' B ', ' C '), ]
df_new2

  team points assists
3 B 77 12
4 B 89 22
5 B 84 25
6 C 97 20

示例 3:使用 %in% 创建数据框列

我们还可以使用%in%运算符来创建新的数据框列。

例如,以下代码显示如何创建一个名为“division”的新列,将团队“A”和“C”放置为“East”,将团队“B”放置为“West”:

 library (dplyr)

#define data frame
df <- data.frame(team=c('A', 'A', 'B', 'B', 'B', 'C'),
                 points=c(67, 72, 77, 89, 84, 97),
                 assists=c(14, 16, 12, 22, 25, 20))

#view data frame
df

  team points assists
1 A 67 14
2 A 72 16
3 B 77 12
4 B 89 22
5 B 84 25
6 C 97 20

#create new column called division
df$division = if_else (df$team %in% c(' A ', ' C '), ' East ', ' West ')
df

  team points assists division
1 A 67 14 East
2 A 72 16 East
3 B 77 12 West
4 B 89 22 West
5 B 84 25 West
6 C 97 20 East

其他资源

如何在R中将两列合并为一列
如何在 R 中向数据框添加行
如何比较 R 中的两列

添加评论

您的电子邮箱地址不会被公开。 必填项已用*标注