在我的数据框中,我在列中有一些半结构化数据。
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;在所有行上。 这是为什么以及如何处理这个?
由于
答案 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)