gpt4 book ai didi

r - 使用grep帮助在R中子集数据帧

转载 作者:行者123 更新时间:2023-12-03 09:06:01 25 4
gpt4 key购买 nike

我无法设定我的资料。我希望将数据子集放在第x列,其中前3个字符以G45开始。

我的数据框:

 x <- c("G448", "G459", "G479", "G406")  
y <- c(1:4)
My.Data <- data.frame (x,y)

我试过了:
 subset (My.Data, x=="G45*")

但是我不确定如何使用通配符。我也尝试过grep()来找到索引:
 grep  ("G45*", My.Data$x)

但它返回所有4行,而不仅仅是返回G45开头的行,可能还因为我不确定如何使用通配符。

最佳答案

使用[提取非常简单:
grep将为您提供与搜索模式匹配的位置(除非您使用value = TRUE)。

grep("^G45", My.Data$x)
# [1] 2

由于您在单列的值内搜索,因此实际上对应于行索引。因此,将其与 [一起使用(在这里您将使用 My.Data[rows, cols]来获取特定的行和列)。
My.Data[grep("^G45", My.Data$x), ]
# x y
# 2 G459 2
subset的帮助页面显示了与 grep相比,如果您更喜欢使用此功能,则如何将 greplsubset[结合使用。这是一个例子。
subset(My.Data, grepl("^G45", My.Data$x))
# x y
# 2 G459 2

从R 3.3开始,现在还有 startsWith函数,您可以再次将其与 subset(或上述任何其他方法)一起使用。根据该功能的帮助页面,它比使用 substringgrepl快得多。
subset(My.Data, startsWith(as.character(x), "G45"))
# x y
# 2 G459 2

关于r - 使用grep帮助在R中子集数据帧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21311386/

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