【发布时间】:2014-01-15 12:46:04
【问题描述】:
我有一个字符矩阵,其中填充了以下一般格式的值:A/-、A/B、I/A、/、A/、/A、-/B、A/B/C、@ 987654330@.
我需要清理这个数据集,所以剩下的就是遵循A/B 格式的值,换句话说,两个由正斜杠分隔的单个字符。任何包含-、I、多个正斜杠、一个没有字母的正斜杠或一个只有一个字母的正斜杠都必须替换为空格“”。
我已经尝试过多次迭代gsub() 来用“”替换任何不符合正确格式的值。
这是我发现的最接近的对我有意义的值,但它只删除了包含 -、I、多个正斜杠和一个正斜杠(没有周围的字母)的值。剩下的数据格式为A/B(我要保留的那个)、A/、/B(其他需要替换的):
data.matrix = as.matrix(data)
data.matrix.clean = gsub("/./|^/.|./$|^/$|-|I", "", data.matrix)
也许我应该用不同的方式写这个而不用|分隔我的每个独立标准?根据我的阅读,^ 表示字符串的开头,$ 表示字符串的结尾。它似乎适用于 ^/$ 案例,但不适用于 ^/. 或 ./$ 案例,我不知道为什么。
在我尝试了一些新的东西之后,我检查了所有包含值的正斜杠的格式,使用这个似乎可以正常工作的代码。
slash = grep("/", data.matrix.clean)
slash.t = data.matrix.clean[slash]
table(slash.t)
任何有助于更好地理解gsub() 中可以使用的符号以使其正常工作的帮助将不胜感激。
谢谢!
【问题讨论】:
-
我已经从标题as per the guideline中删除了标签。
-
你想保留
"A/B/C"吗? -
不,我不想保留 A/B/C。现在尝试一些建议。
标签: regex string r replace gsub