我有带有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)
答案 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