R在字符串

时间:2018-12-06 03:45:53

标签: r

我有带有2个属性(字符串和输出)的数据框

v.string <- c(
"'NA', 'A', 'NA'",
"'A', 'B', 'NA'",
"'NA'",
"'A'"
)

在字段字符串中,有一系列元素可能包含NA或其他字符。我想创建一个名为output的字段,以指示非NA的第n个元素。

v.desiredoutput <- c(2,1,0,1)

df <- data.frame(string=v.string, output=v.desiredoutput)

1 个答案:

答案 0 :(得分:2)

您可以使用strsplit分割字符串,并找到第一个非-“'NA'”

v <- sapply(strsplit(v.string, ","), function(x) min(which(x != "'NA'")))
v
#[1]   2   1 Inf   1

如果没有匹配项,则返回Inf,如果需要,可以将其更改为0

v[is.infinite(v)] <- 0
v
#[1] 2 1 0 1

@Shree使用match

提供了更好的选择
sapply(strsplit(v.string, ","), function(x) match(TRUE, x!= "'NA'", nomatch = 0))
#[1] 2 1 0 1