Мне нужно выполнить побитовые операции в столбцах столбцов, содержащих строки бит. Например, я хотел бы быть в состоянии сделать что-то вродеdplyr-дружественные побитовые операции над строками в R
ds <- tibble(Id=1:2, X1=c("001", "011"), X2=c("101", "110"))
mutate(ds, X1andX2 = magic.AND(X1,X2))
получить
# A tibble: 2 x 4
Id X1 X2 X1andX2
<int> <chr> <chr> <chr>
1 1 001 101 001
2 2 011 110 010
я действую на наборах данных, которые не особенно велика (~ 50k строк), но я должен выполните эту операцию много раз. Итак, я ищу что-то более-менее эффективное и простое.
Поскольку я должен запускать много операций присоединения и группировки, я бы предпочел подход, совместимый с dplyr.
Edit: К сожалению, в приведенной выше примере это не очень хорошо, как три-битовых строки дают результаты, которые выглядят как три-битовые строки после заливки целых чисел и отступы с 0s (см ответа SOTOS, что почти работает). Кроме того, было бы неплохо увидеть решение для длинных строк, то есть более 32 бит. Вот лучший пример.
ds <- tibble(Id=1:2, X1=c("0101", "1110"), X2=c("1110", "0110"))
Выход
# A tibble: 2 x 4
Id X1 X2 X1andX2
<int> <chr> <chr> <chr>
1 1 0101 1110 0100
2 2 1110 0110 0110
как '001' &' 101' дают '001'? – Sotos
Элементный, т. Е. 0 & 1 => 0, 0 & 0 => 0, 1 & 1 => 1 – rbrisk
Если вы после производительности, первый вопрос заключается в том, почему вы храните бит в символьных строках. Храните их в битвекторах (= целые числа) и выполняйте операции с истинными битами. –