过滤或子集数据框不包括所有值

时间:2021-07-28 19:44:51

标签: r dataframe filter dplyr subset

我有一个数据框,我正在尝试根据列 ID 对其进行子集化,但由于 ID 值重复,因此并非所有值都包含在输出中。

示例:

values <- sample(1:100, 2520, replace=TRUE)
ID <- rep(c(1:21), times = 120) #21 unique IDs, each repeated 120 times
df <- data.frame(values, ID)


df_sub <- df %>% dplyr::filter(ID == c(1,2,5,7,9))

正确地按 ID 进行子集化,但每个 ID 只得到 24 行,而不是我期望的 120 行。

length(df_sub$ID) = 120,应该是 600。

1 个答案:

答案 0 :(得分:3)

我们可以使用 %in% 代替 ==,因为 == 是逐元素运算符,并且只能使用单个元素,或者 {{1} 的 lhs 和 rhs 的长度应该相同}

==