Сопоставление с образцом в контексте кадра данных

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

Я очень признателен за любую помощь, которая поможет мне начать решение этой проблемы или поможет мне достичь моей более крупной цели.

6
задан Sam Globus 27 October 2011 в 03:50
поделиться