Удалить числа <4 цифры в списке в кадре данных в R - PullRequest
1 голос
/ 17 февраля 2020

У меня есть такой фрейм данных, мне нужно удалить значения меньше 4 цифр в столбце элемента,

department  item
xyz009   c("1","676547","2","434567","3","567369","4","987654","6","54546676732")

Вывод

department  item

xyz009      676547,434567,567369,987654,54546676732

Спасибо за вашу помощь

Ответы [ 3 ]

2 голосов
/ 17 февраля 2020

Может быть, вы можете попробовать nchar + subset

> subset(v,nchar(v)>4)
[1] "676547"      "434567"      "567369"     
[4] "987654"      "54546676732"

ДАННЫЕ

v <- c("1","676547","2","434567","3","567369","4","987654","6","54546676732")
1 голос
/ 17 февраля 2020

1.Создать минимальный воспроизводимый пример

xyz009 <- c("1","676547","2","434567","3","567369","4","987654","6","54546676732")

2. Предлагаемое решение с использованием базы R:

Вектор xyz009 имеет тип character

typeof(xyz009)

[1] "character"

Чтобы выполнить с ним математику (т. Е. Использовать >), мы должны привести его к нумерации c, используя as.numeric

num_xyz <- as.numeric(xyz009)

Теперь мы можем использовать индекс для «фильтрации» значений, где выражение оценивается как TRUE:

test_result <- num_xyz > 9999

Вектор test_result состоит из логических значений

test_result

[1] FALSE  TRUE FALSE  TRUE FALSE  TRUE FALSE  TRUE FALSE  TRUE

Мы можем использовать эти логические значения как index '(R сохраняет только значения, где индекс равен TRUE):

num_xyz[test_result]

Возвращает:

[1]      676547      434567      567369      987654 54546676732
0 голосов
/ 17 февраля 2020

Используя базу R, вы можете использовать unlist и lapply:

xyz009<-c("1","676547","2","434567","3","567369","4","987654","6","54546676732")
unlist(lapply(xyz009,function(x) x[nchar(x)>3]))

Результат:

[1] "676547"      "434567"      "567369"      "987654"      "54546676732"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...