gpt4 book ai didi

仅当它是 R 中的特定字符时才替换字符串中的第 n 个字符

转载 作者:行者123 更新时间:2023-12-04 09:29:33 24 4
gpt4 key购买 nike

我正在将一系列调查导入为 .csv 文件并组合成一个数据集。问题是对于七个文件之一,一些变量的导入略有不同。数据集很大,我想找到一种方法来编写一个函数来运行给我带来麻烦的数据集。

在某些变量中,当应该有一个点时却出现了一个下划线。并非所有变量都具有相同的格式,但不正确的是,因为下划线始终是列名的第 6 个元素。

我希望 R 查找第 6 个元素,如果它是下划线,则将其替换为点。下面是一个虚构的例子。

col_names <- c("s1.help_needed",
"s1.Q2_im_stuck",
"s1.Q2.im_stuck",
"s1.Q3.regex",
"s1.Q3_regex",
"s2.Q1.is_confusing",
"s2.Q2.answer_please",
"s2.Q2_answer_please",
"s2.someone_knows_the answer",
"s3.appreciate_the_help")

我认为对此有一个正则表达式答案,但我正在努力寻找一个。也许还有一个整洁的答案?

最佳答案

正如@thelatemail 所指出的,您的数据实际上在第五个位置都没有下划线,但有些数据在第六个位置(其他人有点)。基本的 R 方法是使用 gsub():

result <- gsub("^(.{5})_", "\\1.", col_names)

> result
[1] "s1.help_needed" "s1.Q2.im_stuck"
[3] "s1.Q2.im_stuck" "s1.Q3.regex"
[5] "s1.Q3.regex" "s2.Q1.is_confusing"
[7] "s2.Q2.answer_please" "s2.Q2.answer_please"
[9] "s2.someone_knows_the answer" "s3.appreciate_the_help"

这里是正则表达式的解释:

^         from the start of the string
(.{5}) match AND capture any five characters
_ followed by an underscore

括号中的数量称为捕获组,可用于通过\\1 进行替换。所以正则表达式是说用我们捕获的五个字符替换前六个字符,但使用一个点作为第六个字符。

关于仅当它是 R 中的特定字符时才替换字符串中的第 n 个字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41971945/

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