我一直在尝试使用 str_replace_all 替换 R 中数据帧的列中的多个字符串。
目前我已经写了一些简单的东西(如下)
mydata$Final_Result <- str_replace_all(mydata$Final_Result, 'Absent', 'A')
mydata$Final_Result <- str_replace_all(mydata$Final_Result, 'Present', 'P')
Run Code Online (Sandbox Code Playgroud)
我在同一列中还有其他字符串需要替换。所以我正在寻找一种更优雅的方法来在一行中编写此代码。
如果有人能就如何做到这一点提出建议,我将不胜感激。
我有一个名为 Words 的字符串向量,我需要使用 删除所有空字符串library(stringr)。我尝试过str_remove_all(words, pattern = ""),但它告诉我:
错误:不支持空“pattern”。
我应该怎么办?任何帮助,将不胜感激。
我重新运行了一些我多年来一直使用的 R 代码,似乎一夜之间它就停止工作了。数据没有任何变化,代码也没有任何变化,但是 R 包 stringr 中的函数 str_extract_all 不再起作用。
\n数据来自 .txt 文件,该文件是贝叶斯饮食模型的输出。我想把它做成一张桌子,这样我就可以查看个人的饮食。它看起来像这样:
\n狼队:
\n| 个人 | 部分 |
|---|---|
| 狼1.鹿 | .50 |
| 狼1.麋鹿 | .30 |
| 狼1.驼鹿 | .20 |
| 狼2.鹿 | .40 |
| 狼2.麋鹿 | .35 |
| 狼2.驼鹿 | .25 |
我一直使用的创建新食物栏的代码行是:
\nWolves$Food <- unlist(\n str_extract_all(\n Wolves$Individual, \n c("Deer", "Elk", "Moose")\n ), \n use.names=FALSE\n)\nRun Code Online (Sandbox Code Playgroud)\n所以新数据将如下所示:
\n| Individual | Proportion| Food\n| ---------- | --------- |\n| Wolf1.Deer | .50 | Deer\n| Wolf1.Elk | .30 | Elk\n| Wolf1.Moose| .20 | Moose\n| Wolf2.Deer | .40 | Deer \n| …Run Code Online (Sandbox Code Playgroud) 我有类似的东西:
test[1]
"[0 30.5 4.5 10.5 2 35 22.999999999999996 29 5.500000000000001 23.5 18 23.5 44.5 3 44.5 44.00000000000001 43 27 42 35.5 19.5 44.00000000000001 1 0 31 34 18 1.5 26 6 45.99999999999999 10.5 9.5 24 20 42.5 14.5 45.5 20.499999999999996 150 45.5 0 4.5 22.5 4 9 8 0 0 15.5 30.5 7 5.500000000000001 12.5 33.5 15 500 22.5 18 43 4.5 26 23.5 16 4.5 7.5 32 0 0 18.5 33 31 14.5 21.5 0 40 0 0 …Run Code Online (Sandbox Code Playgroud) 这将是愚蠢的.
我有一个字符串:
word <- "dirtyboards.csv"
Run Code Online (Sandbox Code Playgroud)
我想删除csv部分并获得"脏板".
我在尝试:
require(stringr)
str_extract(word, ".*[^.csv]")
Run Code Online (Sandbox Code Playgroud)
我得到了回报:"脏板".".csv"之前的"s"丢失了.
我知道我能做到
gsub(".csv", "", word)
如果可能的话,我想从一个带有一个表达式的字符串中提取带小数的数字.
例如,将"2,123.02"转换为"2123.02" - 我目前的解决方案是:
paste(unlist(str_extract_all("2,123.02","\\(?[0-9.]+\\)?",simplify=F)),collapse="")
Run Code Online (Sandbox Code Playgroud)
但我正在寻找的是str_extract_all中的表达式,它只是将它们自己绑定在一起作为一个向量.这是否可以用正则表达式实现?
我想在遇到时间之后将我的文本分成8个单词和数字.
文字示例:
s <- 'random random random 19:49 0-2 H 2 ABC TREE LAKE #88 TURTLE random random 03:32 43-21 V 8 XYZ LOG #72 FIRE random random random'
Run Code Online (Sandbox Code Playgroud)
我希望如何拆分文本的示例.
'random random random 19:49 0-2 H 2 ABC TREE LAKE #88 TURTLE
random random 03:32 43-21 V 8 XYZ DOG LOG #72 FIRE
random random random'
Run Code Online (Sandbox Code Playgroud)
我知道我可以通过多种方式找到时间
str_extract(str_extract(s, "[:digit:]*:"), "[:digit:]*")
Run Code Online (Sandbox Code Playgroud)
但我不确定如何在时间之后分割八个单词和数字.任何帮助将不胜感激.
考虑data.frame可以说:
df <- data_frame(id = c(1, 1, 2, 2), n = c("100+", "50+", "30+", "40+"))
Run Code Online (Sandbox Code Playgroud)
列n应是转换为c("100","50","30","40")通过使用str_replace()内dplyr库.
我需要这样的东西来工作:
library(dplyr)
library(stringr)
df %>%
mutate(n = str_replace("+",""))
Run Code Online (Sandbox Code Playgroud)
必须有一种适当的方法来str_replace()为具有dplyr的列应用函数.
我有以下字符串:
x <- "sim_K1000_human_compact"
Run Code Online (Sandbox Code Playgroud)
我怎样才能捕捉1000并human与compact作为载体?
我试过这个但没有用:
> strsplit(base, "sim_K([0-9]+)_(\\w+)_(\\w+)")
[[1]]
[1] ""
Run Code Online (Sandbox Code Playgroud) Consider this simple example
www.stackunderflow.com?q=snack%20over%20flow
I am interested in parsing the query string of the url. However, as you can see, I have these annoying URL encoding strings (such as %20) that I need convert.
How can I do that in R? I would like to obtain a clean string such as snack over flow. I know how to get the query part :
> str_match('www.stackunderflow.com?q=snack%20over%20flow', regex('\\?q=(.*)'))[,2]
[1] "snack%20over%20flow"
Run Code Online (Sandbox Code Playgroud)
but I dont know how to clean the string. …