标签: strsplit

R中的strsplit具有元字符

我有大量的数据,其中分隔符是反斜杠.我在R中处理它并且我很难找到如何拆分字符串,因为反斜杠是一个元字符.例如,字符串看起来像这样:

1128\0019\XA5\E2R\366\00=15
Run Code Online (Sandbox Code Playgroud)

我想沿着\角色分割它,但是当我运行strsplit命令时:

strsplit(tempStr, "\\")
Error in strsplit(tempStr, "\\") : 
  invalid regular expression '\', reason 'Trailing backslash'
Run Code Online (Sandbox Code Playgroud)

当我尝试使用"修复"选项时,它不会运行,因为它在反斜杠之后需要一些东西:

strsplit(tempStr, "\", fixed = TRUE)
Run Code Online (Sandbox Code Playgroud)

不幸的是,我无法使用其他程序预处理数据,因为数据是每天生成的.

string split r strsplit metacharacters

5
推荐指数
1
解决办法
6363
查看次数

R:使用strsplit()在两个字符之间拆分字符串

假设我有以下字符串:

s <- "ID=MIMAT0027618;Alias=MIMAT0027618;Name=hsa-miR-6859-5p;Derives_from=MI0022705"
Run Code Online (Sandbox Code Playgroud)

我想恢复之间的字符串";""="获得以下输出:

[1] "MIMAT0027618"  "MIMAT0027618"  "hsa-miR-6859-5p"  "MI0022705"
Run Code Online (Sandbox Code Playgroud)

我可以使用strsplit()多个拆分元素吗?

split r strsplit

5
推荐指数
1
解决办法
7278
查看次数

仅当子串是另一个向量的元素时,才用逗号分隔字符串

我有一组调查回复,受访者可以选择零或多个选项来回答"你喜欢什么类型的水果?"这个问题.还有一个写入答案的空间.在结果电子表格中,每个人的回答都在一个单元格中,不同类型的水果用逗号分隔,如下所示:

(df <- data.frame(id = c("A", "B", "C", "D", "E"), 
                 data = c("oranges, apples, peaches, cherries, pineapples, strawberries",
                          "oranges, peaches, pears", 
                          "pears, nectarines, cherries (bing, rainier)", 
                          "apples, peaches, nectarines", 
                          ""), 
                 stringsAsFactors = FALSE))

#   id                                                         data
# 1  A oranges, apples, peaches, cherries, pineapples, strawberries
# 2  B                                      oranges, peaches, pears
# 3  C                  pears, nectarines, cherries (bing, rainier)
# 4  D                                  apples, peaches, nectarines
# 5  E  
Run Code Online (Sandbox Code Playgroud)

我想要做的是将响应分成一个长格式表,我几乎用底部的代码完成了.但是,有些受访者在写入回复中包含逗号,我不想将其答案分成逗号.我知道所有原始的多项选择是什么; 我怎么能只拆分这些答案,让写入(用逗号)完好无损?我想最终得到这样的数据框:

   id                               data
1   A                            oranges
2   A                             apples
3 …
Run Code Online (Sandbox Code Playgroud)

string r strsplit

5
推荐指数
1
解决办法
164
查看次数

R strsplit之前(和之后)保留两个分隔符

我有一个如下所示的字符串:

x <- "01(01)121210(01)0001"
Run Code Online (Sandbox Code Playgroud)

我想将其分成一个向量,以便得到以下内容:

[1] "0" "1" "(01)" "1" "2" "1" "2" "1" "0" "(01)" "0" "0" "0" "1"
Run Code Online (Sandbox Code Playgroud)

(|) 可以是 [|] 或 {|},括号之间的位数可以是 2 个或更多。

我一直试图通过首先在括号上分隔来做到这一点:

unlist(strsplit(x, "(?<=[\\]\\)\\}])", perl=T))
[1] "01(01)" "121210(01)" "0001"

or unlist(strsplit(x, "(?<=[\\[\\(\\{])", perl=T))
[1] "01(" "01)121210(" "01)0001"
Run Code Online (Sandbox Code Playgroud)

但我找不到将两者结合在一起的方法。然后,我希望拆分不包含括号的元素。

如果有人可以帮助我解决这个问题或者知道更优雅的方法来做到这一点,我将非常感激。

非常感谢!

regex r delimiter strsplit

5
推荐指数
1
解决办法
1864
查看次数

拆分不同的长度值并绑定到列

我有一个相当大的(大约10万个观测值)数据集,类似于:

data <- data.frame(
                 ID = seq(1, 5, 1),
                 Values = c("1,2,3", "4", " ", "4,1,6,5,1,1,6", "0,0"), 
                 stringsAsFactors=F)
data
  ID        Values
1  1         1,2,3
2  2             4
3  3              
4  4 4,1,6,5,1,1,6
5  5           0,0
Run Code Online (Sandbox Code Playgroud)

我想通过向值列拆分","NA遗漏细胞:

ID v1 v2 v3 v4 v5 v6 v7
1  1  2  3  NA NA NA NA
2  4  NA NA NA NA NA NA
3  NA NA NA NA NA NA NA
4  4  1  6  5  1  1  6 …
Run Code Online (Sandbox Code Playgroud)

r strsplit rbind data.table

5
推荐指数
1
解决办法
1736
查看次数

将"Name"分隔为数据框的"FirstName"和"LastName"列

我正在努力弄清楚如何在数据帧中将单个"Name"列拆分为同一数据帧中的另外两列FistName和LastName.挑战在于我的一些姓名有几个姓氏.本质上,我想取第一个单词(或字符串的元素)并将其放在FirstName列中,然后将所有后续文本(当然减去空格)放入LastName列.

这是我的DataFrame"tteam"

NAME <- c('John Doe','Peter Gynn','Jolie Hope-Douglas', 'Muhammad Arnab Halwai')
TITLE <- c("assistant", "manager", "assistant", "specialist")
tteam<- data.frame(NAME, TITLE)
Run Code Online (Sandbox Code Playgroud)

我想要的输出是这样的:

FirstName <- c("John", "Peter", "Jolie", "Muhammad")
LastName <- c("Doe", "Gynn", "Hope-Douglas", "Arnab Halwai")
tteamdesire <- data.frame(FirstName, LastName, TITLE)
Run Code Online (Sandbox Code Playgroud)

我尝试了以下代码来创建一个只有名称的新数据框,允许我从第一列中提取名字.但是,我无法将姓氏列入任何顺序.

names <- tteam$NAME ##  puts full names into names vector
namesdf <- data.frame(do.call('rbind', strsplit(as.character(names),' ',fixed=TRUE))) 
## splits out all names into a dataframe PROBLEM IS HERE!
Run Code Online (Sandbox Code Playgroud)

r strsplit

5
推荐指数
2
解决办法
1万
查看次数

用加号(+)字符拆分字符串

我在数据框中有一个字符串: "(1)+(2)"

我想用分隔符"+"拆分,这样我得到一个元素(1)和另一个元素(2),因此保留括号.我用过,strsplit但它没有保留括号.

r strsplit

5
推荐指数
1
解决办法
4760
查看次数

按列名将data.frame拆分为组

我是R.的新手.我有一个数据框,其列名是这样的:

file_001   file_002   block_001   block_002   red_001   red_002 ....etc'  
  0.05       0.2        0.4         0.006       0.05       0.3
  0.01       0.87       0.56        0.4         0.12       0.06
Run Code Online (Sandbox Code Playgroud)

我想通过列名将它们分成组,以获得如下结果:

group_file
file_001   file_002
  0.05       0.2
  0.01       0.87

group_block
block_001   block_002
  0.4        0.006
  0.56       0.4

group_red
red_001    red_002
  0.05       0.3
  0.12       0.06

...etc'
Run Code Online (Sandbox Code Playgroud)

我的档案很大.我没有一定数量的团体.它需要只是列名的开头.

r strsplit dataframe

5
推荐指数
1
解决办法
1220
查看次数

使用正则表达式拆分R

我想使用R拆分一些聊天消息,这是一个示例:

example <- "[29.01.18, 23:33] Alice: Ist das hier ein Chatverlauf?\n[29.01.18, 23:45] Bob: Ja ist es!\n[29.01.18, 23:45] Bob: Der ist dazu da die funktionsweise des Parsers zu demonstrieren\n[29.01.18, 23:46] Alice: ?PTT-20180129-WA0025.opus (Datei angehängt)\n[29.01.18, 23:46] Bob: Ah, er kann also auch erkennen ob Voicemails gesendet wurden!\n[29.01.18, 23:46] Bob: Das ist praktisch!\n[29.01.18, 23:47] Bob: Oder?\n[29.01.18, 23:47] Alice: ja |Emoji_Grinning_Face_With_Smiling_Eyes| \n[29.01.18, 23:47] Alice: und Emojis gehen auch!\n[29.01.18, 23:47] Bob: Was ist mit normalen Smilies?\n[29.01.18, 23:49] Alice: ?Keine Ahnung, lass uns das doch mal …
Run Code Online (Sandbox Code Playgroud)

regex r strsplit

5
推荐指数
1
解决办法
116
查看次数

在每个逗号后查找第二个空格

这是对该问题的后续处理:将前一个单词和后一个单词连接到一个与R中的条件匹配的单词

我正在寻找一个正则表达式,它将在逗号后发生的第二个空格处拆分字符串。看下面的例子:

vector <- c("Paulsen", "Kehr,", "Diego", 
            "Schalper", "Sepúlveda,", "Alejandro",
             "Von Housen", "Kush,", "Terry")

X <- paste(vector, collapse = " ")
X

## this is the string I am looking to split:
"Paulsen Kehr, Diego Schalper Sepúlveda, Diego Von Housen Kush, Terry"
Run Code Online (Sandbox Code Playgroud)

每个逗号后的第二个空格是我的的标准。因此,我的输出将是:

"Paulsen Kehr, Diego"
"Schalper Sepúlveda, Alejandro"
"Von Housen Kush, Terry"
Run Code Online (Sandbox Code Playgroud)

我想出了一个模式,但效果不佳。

[^ ]+ [^ ]+, [^ ]+( )
Run Code Online (Sandbox Code Playgroud)

与一起使用会strsplit删除所有单词,而不是[^ ]+ [^ ]+, [^ ]+(group-1)仅在第1组(即)分割。我认为我只需要排除完全匹配项,然后再与空格匹配即可。- 正则表达式演示

strsplit(X, "[^ ]+ [^ ]+, …
Run Code Online (Sandbox Code Playgroud)

regex r strsplit

5
推荐指数
1
解决办法
60
查看次数

标签 统计

r ×10

strsplit ×10

regex ×3

split ×2

string ×2

data.table ×1

dataframe ×1

delimiter ×1

metacharacters ×1

rbind ×1