如何在 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
我们可以看到,值3和5是标记为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