I есть фрейм данных, первые 5 строк которого выглядят следующим образом:
Sample CCT6 GAT1 IMD3 PDR3 RIM15
001 0000000000 111111111111111111111 010001000011 0N100111NNNN 01111111111NNNNNN
002 1111111111 111111111111111111000 000000000000 0N100111NNNN 00000000000000000
003 0NNNN00000 000000000000000000000 010001000011 000000000000 11111111111111111
004 000000NNN0 11100111111N111111111 010001000011 111111111111 01111111111000000
005 0111100000 111111111111111111111 111111111111 0N100111NNNN 00000000000000000
Полный набор данных содержит 2000 отсчетов. Я пытаюсь написать код, который позволит мне определить, является ли строка чисел для каждого из 5 столбцов однородной (то есть все 1 или 0) во всех моих выборках. В идеале я также хотел бы иметь возможность различать 1 и 0 в тех случаях, когда ответ - Истинно
. В моем примере ожидаемые результаты будут следующими:
Sample CCT6 GAT1 IMD3 PDR3 RIM15
001 TRUE (0) TRUE (1) FALSE FALSE FALSE
002 TRUE (1) FALSE TRUE (0) FALSE TRUE (0)
003 FALSE TRUE (0) FALSE TRUE (0) TRUE (1)
004 FALSE FALSE FALSE TRUE (1) FALSE
005 FALSE TRUE (1) TRUE (1) FALSE TRUE (0)
Я не зацикливаюсь на использовании логики, и я могу использовать символы до тех пор, пока их можно использовать для различения разных классов. В идеале id хотел бы вернуть результаты в аналогичном фрейме данных.
У меня возникли проблемы с самым простым первым шагом, который заключается в том, чтобы заставить R сказать, состоит ли строка из одного и того же значения. Я пробовал использовать различные выражения, используя grep
и regexpr
, но не смог получить результат, который я мог бы использовать для применения всего фрейма данных с помощью ddply
или что-то похожее. Вот несколько примеров того, что я пробовал на этом этапе:
a = as.character("111111111111")
b = as.character("000000000000")
c = as.character("000000011110")
> grep("1",a)
[1] 1
> grep("1",c)
[1] 1
> regexpr("1",a)
[1] 1
attr(,"match.length")
[1] 1
> regexpr("1",c)
[1] 8
attr(,"match.length")
[1] 1
Я очень признателен за любую помощь, которая поможет мне начать решение этой проблемы или поможет мне достичь моей более крупной цели.