R найти n-й не-NA элемент в строке - PullRequest
0 голосов
/ 06 декабря 2018

У меня есть фрейм данных с 2 атрибутами, строкой и выводом

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

В строке поля есть ряд элементов, которые могут содержать NA или другой символ.Я хотел бы создать поле с именем output, чтобы указать n-й элемент, который не является NA.

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

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

1 Ответ

0 голосов
/ 06 декабря 2018

Вы можете разбить строку, используя 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...