Возвращает позицию строки и столбца фрейма данных R, где значение ячейки соответствует шаблону - PullRequest
2 голосов
/ 25 февраля 2020

У меня есть фрейм данных

structure(list(Brand = c("AB", "AC", "AD", "BA", "CB", "CK"), `&TV` = c("0_640", 
"0", "1_340", "0", "0", "0"), `&TV HD` = c("1_500", "0", "0_140", 
"0", "0", "0")), row.names = c(NA, 6L), class = "data.frame")

, который выглядит следующим образом:

  Brand   &TV &TV HD
1    AB 0_640  1_500
2    AC     0      0
3    AD 1_340  0_140
4    BA     0      0
5    CB     0      0
6    CK     0      0

Я хочу вернуть значение строки и столбца тех ячеек с шаблоном 1_ в Это. Для приведенного выше примера я хочу вернуть

row col
3    2
1    3

Я пытаюсь использовать grep, но не очень успешно.

grep(New_Brands_Theme_Combine[,c(1:length(New_Brands_Theme_Combine))], pattern = "1_")

Выше приведены номера столбцов кадра данных где образец найден. Как получить номера столбцов вместе с номерами строк.

Ответы [ 2 ]

4 голосов
/ 25 февраля 2020

Один из вариантов - l oop над интересующими столбцами ('colnm'), примените grep для получения индекса позиции, установите names для list с индексом столбца и stack это к двум столбцам data.frame

colnm <- 2:3
out <- stack(setNames(lapply(df1[colnm], grep, pattern = "1_"), colnm))
names(out) <- c("row",  "col")
out
#  row col
#1   3   2
#2   1   3
3 голосов
/ 25 февраля 2020

Один base R параметр может быть:

which(matrix(grepl("1_", unlist(df)), dim(df)), arr.ind = TRUE)

     row col
[1,]   3   2
[2,]   1   3

Или даже:

which(sapply(df, grepl, pattern = "1_"), arr.ind = TRUE)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...