我有一个包含多个变量的数据框,如下所示:
land_unit<-c("0.5ha", "hactares", "ha", "ha", "acre", "3ha",
"lima", "limas", "acre", "cunny", "6 cunnies")
我想编写一个函数来为我整理这些数据,因为我的数据框中有许多具有类似格式的变量。我希望该函数根据字符串中出现的第一个字母替换每个元素。例如,如果字符串中出现的第一个字母是“h”,我希望整个字符串替换为“ha”,如果“l”则替换“lima”,如果“a”则替换“acre”,如果“c”则替换“acre”卡尼”。
我对此进行了广泛的搜索,但找不到答案,但我知道必须有一个相对简单的解决方案。也许使用正则表达式?
任何帮助将不胜感激。
最佳答案
根据描述,这可能会有所帮助。我们使用 gsubfn 来匹配从字符串 (^) 开头开始的零个或多个非字母字符 (
),后跟捕获为一组的单个字母 ([^A-Za-z]*
) ([a-z])
),后跟其他字符 (.*
),并将捕获组替换为命名键/值列表
library(gsubfn)
gsubfn("^[^A-Za-z]*([a-z]).*", list(h = "ha", l="lima", a = "acre", c = "kani"), land_unit)
#[1] "ha" "ha" "ha" "ha" "acre" "ha" "lima" "lima" "acre" "kani" "kani"
关于r - 在 R 中编写一个函数,根据字母的第一个实例选择字符串并替换该字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41457263/