gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 02:10:06 26 4
gpt4 key购买 nike

我有一个包含三列和数千行的数据框。前两列(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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com