拆分R

时间:2016-07-07 19:07:58

标签: r string split gsub strsplit

在我的数据框中,我在列中有一些半结构化数据。

df
col1
a|b|c
a b1|b|c
a & b2|b|c 3

来自dataframe$col1我想只提取" |"之前的第一个单词。

我尝试使用此

df$col2 <- unlist(strsplit(as.character(df$a),"[|]"))[[1]][1]

但结果是具有相同的&#34; a&#34;在所有行上。 这是为什么以及如何处理这个?

由于

2 个答案:

答案 0 :(得分:0)

如果我们需要在第一个$(function() { $.ajax({ url: "__URL__/_api/lists/getbytitle('Master%20Project%20List')/items?&$filter=Number eq '" + projectId + "'", headers: {"Accept": "application/json;odata=verbose"}, type: "GET", cache: false, async: false, }).success(function (data) { $.each(data.d.results, function(key, value) { //Project Title console.log("TEST TITLE - " + value.Title); Title = "*" + value.Title; //Project Divison console.log("TEST DIVISION - " + value.Div); division = "*" + value.Div; }); }); });

之前提取字符
|

如果我们只想提取单词

sub("[|].*", "", df$col1)
#[1] "a"      "a b1"   "a & b2"

答案 1 :(得分:0)

您只是调用第一个列表对象的第一个列表位置。由于R的循环规则,该列的每一行都会重复该字符。

t <- c("a|junk", "a b|junk", "a b1|junk")
unlist(strsplit(as.character(t),"[|]"))[[1]][1]
[1] "a"

对于列拆分,我喜欢将strsplit()与sapply()结合使用。这是Hadley Wickham已经在SO上发布的内容。

df$col2 <- sapply(strsplit(as.character(df$a),"[|]"), "[", 1)

https://stackoverflow.com/a/1355660/1146646