gpt4 book ai didi

r - 基于列名称的部分匹配的子集数据

转载 作者:行者123 更新时间:2023-12-03 13:56:17 25 4
gpt4 key购买 nike

我需要子集一个df以包括某些字符串。其中一些是完整的列名,以下内容可以正常工作:

testData[,c("FullColName1","FullColName2","FullColName3")]


我的问题是,我需要对此进行扩展,使其也包括包含特定字符串的列名称,这些字符串可能与某些其他列名称部分匹配。这些字符串包括字母和符号:

"PartString1()","PartString2()"


我试过在这些通配符周围加上通配符。 (我在下面用前缀“ star”表示了这一点,因为“ *”符号无法正确呈现。)

testData[ ,c("FullColName1","FullColName2","FullColName3",
"starPartString1()star","starPartString2()star")]


但是我收到一条错误消息:未定义的列被选中。我不知道是否需要grep或如何使它工作。

最佳答案

您提到您可能正在寻找符号,因此对于此特定示例,我们可以使用[[:punct:]]作为正则表达式。这将在列名称中找到所有带有标点符号的字符串。

d <- data.frame(1:3, 3:1, 11:13, 13:11, rep(1, 3))
names(d) <- c("FullColName1", "FullColName2", "FullColName3",
"PartString1()","PartString2()")

d[grepl("[[:punct:]]", names(d))]
# PartString1() PartString2()
# 1 13 1
# 2 12 1
# 3 11 1


最后一部分仅说明了使用 stringr中的其他字符串处理函数执行此操作的另一种方法

library(stringr)
d[str_detect(names(d), "[[:punct:]]")]
# PartString1() PartString2()
# 1 13 1
# 2 12 1
# 3 11 1


根据操作数添加评论

d[grepl("ring[12()]", names(d))]


从名称向量获取子字符串 ring1()ring2()

关于r - 基于列名称的部分匹配的子集数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24176448/

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