Вероятно, ужасный заголовок, но у меня есть таблица квалификаторов, хранящаяся как "1", "2" и "3".То, что я пытаюсь сделать, это посмотреть в каждой строке (примерно 300 000 строк, но переменной.) И определить, где встречается одна «3» (если она встречается более одного раза, мне это не интересно) и остальныестолбцы в этой строке имеют «1» и возвращают это в список.(Количество столбцов и имен столбцов изменяются в зависимости от входных файлов.)
Инстинктивно я хочу попытаться сделать это, выполнив вложенные циклы for, которые индексируют количество строк, а затем число столбцов, а затем некоторую функцию, которая выглядитза один "3" и не "2".- которое, вероятно, означает, что предпочтительным способом было бы использование некоторой правильной прикладной функции?
Еще один способ - суммировать количество столбцов, добавить 2, а затем суммировать строку, имея квалификатор, который не может быть в двоичных числах.строка.Но это казалось довольно сложным.
df1
seq loc Ball Cat Square Water
1 AAAAAACCAGTCCCAGTTCGGATTG t 3 1 1 1
2 AAAAAACCAGTCTCAGTTCGGATTG b 1 1 3 3
3 AAAAAACCAGTCTCAGTTCGGATTG t 1 3 2 1
4 AAAAAACCGGTCACAGTTCAGATTG b 1 1 1 2
5 AAAAAACCGGTCACAGTTCAGATTG t 1 1 3 1
Expected Ouput:
seq loc Group
1 AAAAAACCAGTCCCAGTTCGGATTG t Ball
2 AAAAAACCGGTCACAGTTCAGATTG t Square
dput of df1:
structure(list(seq = structure(c(1L, 2L, 2L, 3L, 3L), .Label =
c("AAAAAACCAGTCCCAGTTCGGATTG",
"AAAAAACCAGTCTCAGTTCGGATTG", "AAAAAACCGGTCACAGTTCAGATTG"), class =
"factor"),
loc = structure(c(2L, 1L, 2L, 1L, 2L), .Label = c("b",
"t"), class = "factor"), Ball = c("3", "1", "1", "1", "1"
), Cat = c("1", "1", "3", "1", "1"), Square = c("1", "3",
"2", "1", "3"), Water = c("1", "3", "1", "2", "1")), row.names = c(NA,
-5L), class = c("tbl_df", "tbl", "data.frame"))