r - 基于两列字符串匹配的子集 R 数据框

标签 r dataframe subset

我有一个包含三列和数千行的数据框。前两列(x 和 y)包含字符串,第三列 (z) 包含数字数据。我需要根据前两列中的匹配值对数据框进行子集化。

    x <- c("a", "b", "c", "d", "f", "g", "h", "i", "j", "k")
    y <- c("h", "b", "k", "a", "g", "d", "i", "c", "f", "j")
    z <- c(1:10)
    df <- data.frame(x, y, z)

       x y  z
    1  a h  1
    2  b b  2
    3  c k  3
    4  d a  4
    5  f g  5
    6  g d  6
    7  h i  7
    8  i c  8
    9  j f  9
    10 k j 10

假设这是我的表,我感兴趣的值是“a”、“c”、“f”、“h”和“k”。我只想返回 x 和 y 都包含五行之一的行,因此在本例中为第 1 行和第 3 行。

我试过:

    df2 <- filter(df, 
             x == ("a" | "c" | "f" | "h" | "k") & 
             y == ("a" | "c" | "f" | "h" | "k"))

但这不适用于因子或字符串。是否有等效或其他解决方法?

提前致谢。

最佳答案

我认为这会返回您正在寻找的内容:

# build vector of necessary elements
mustHaves <- c("a", "c", "f", "h", "k")
# perform subsetting
df[with(df, x %in% mustHaves & y %in% mustHaves),]
  x y z
1 a h 1
3 c k 3

数据

df <- data.frame(x, y, z, stringsAsFactors = FALSE)

关于r - 基于两列字符串匹配的子集 R 数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39479759/

相关文章:

python - 许多数据帧上的高效 Python Pandas Stock Beta 计算

r - 选择数据框中向量的第一个元素以外的所有元素

python - 如何将添加字符串应用到数据框子集的列

r - 使用选定的行来子集 r 中另一个表的 Shiny

给定条件替换 data.table 中的所有值

python - 如何用any检查系列中的值?

r - 通过施加新的结构从数据框架中进行子集化

python - 优化 Kadane 的 numpy 算法

r - 如何在 dplyr 中使用 recode_factor 来重新编码多个因子值?

r - 错误 : Python module tensorflow was not found. Rstudio,Windows10 - 路径问题