2015-02-14 2 views
0

Итак, у меня есть файл, который содержит большое количество шестнадцатеричных цифр в парах и символ «NA»/missing data «??».Подсчет числа шестнадцатеричных чисел - R

A4 BB 08 6F E7 88 D9 10 11 12 AC CB C8 CC #Row of data in the file. 
?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? #Row of missing data in the file. 

Я пытаюсь трубы все это и получить некоторое представление о частоте каждого шестнадцатеричного числа от 0 до 256. До сих пор я прочитал его в структуру, используя команду «читаемой таблицы» (вызов это тест), и я действительно не уверен, что делать дальше. Я сделал несколько разных вещей, пытаясь подавить линии с помощью «??» в любом столбце, а затем преобразовать остальные в шестнадцатеричные значения и получить от этого что-то полезное. Если кто-нибудь может указать мне на инструменты, которые мне нужны для выполнения этой задачи, я бы очень благодарен.

Редактировать: В соответствии с запросом выход dput.

structure(list(V2 = structure(c(88L, 209L, 124L, 91L, 132L, 235L 
), .Label = c("??", "00", "01", "02", "03", "04", "05", "06", 
"07", "08", "09", "0A", "0B", "0C", "0D", "0E", "0F", "10", "11", 
"12", "13", "14", "15", "16", "17", "18", "19", "1A", "1B", "1C", 
"1D", "1E", "1F", "20", "21", "22", "23", "24", "25", "26", "27", 
"28", "29", "2A", "2B", "2C", "2D", "2E", "2F", "30", "31", "32", 
"33", "34", "35", "36", "37", "38", "39", "3A", "3B", "3C", "3D", 
"3E", "3F", "40", "41", "42", "43", "44", "45", "46", "47", "48", 
"49", "4A", "4B", "4C", "4D", "4E", "4F", "50", "51", "52", "53", 
"54", "55", "56", "57", "58", "59", "5A", "5B", "5C", "5D", "5E", 
"5F", "60", "61", "62", "63", "64", "65", "66", "67", "68", "69", 
"6A", "6B", "6C", "6D", "6E", "6F", "70", "71", "72", "73", "74", 
"75", "76", "77", "78", "79", "7A", "7B", "7C", "7D", "7E", "7F", 
"80", "81", "82", "83", "84", "85", "86", "87", "88", "89", "8A", 
"8B", "8C", "8D", "8E", "8F", "90", "91", "92", "93", "94", "95", 
"96", "97", "98", "99", "9A", "9B", "9C", "9D", "9E", "9F", "A0", 
"A1", "A2", "A3", "A4", "A5", "A6", "A7", "A8", "A9", "AA", "AB", 
"AC", "AD", "AE", "AF", "B0", "B1", "B2", "B3", "B4", "B5", "B6", 
"B7", "B8", "B9", "BA", "BB", "BC", "BD", "BE", "BF", "C0", "C1", 
"C2", "C3", "C4", "C5", "C6", "C7", "C8", "C9", "CA", "CB", "CC", 
"CD", "CE", "CF", "D0", "D1", "D2", "D3", "D4", "D5", "D6", "D7", 
"D8", "D9", "DA", "DB", "DC", "DD", "DE", "DF", "E0", "E1", "E2", 
"E3", "E4", "E5", "E6", "E7", "E8", "E9", "EA", "EB", "EC", "ED", 
"EE", "EF", "F0", "F1", "F2", "F3", "F4", "F5", "F6", "F7", "F8", 
"F9", "FA", "FB", "FC", "FD", "FE", "FF"), class = "factor"), 

Существует также ряд других столбцов. Я оставил их, так как они имеют одинаковые значения ~ 257 для меток, которые дают или принимают значение шестнадцатеричного значения здесь или там.

as.hexmode (names (test)) привело к тому же выпуску, не может принуждать 'x' к hexmode.

Редактировать: Хорошо, у меня был некоторый успех, и я получил его, чтобы сделать то, что я хотел, чтобы он делал больше или меньше.

Сначала я хотел объединить столбцы, как я просто хотел общее количество вхождений (это может даже быть ненужным)

test2 <- 
c(as.character(test[,1]),as.character(test[,2]),as.character(test[,3]),as.character(test[,4]), 
as.character(test[,5]), as.character(test[,6]), as.character(test[,7]), 
as.character(test[,8]), as.character(test[,9]), as.character(test[,10]), 
as.character(test[,11]), as.character(test[,12]), as.character(test[,13]), 
as.character(test[,14]), as.character(test[,15]), as.character(test[,16])) 

Тогда я просто хотел отсчетов каждого значения:

table(test2) 

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

Edit: Окончательный ответ был (идя с моим первоначальным именованием):

table(unlist(lapply(test, as.character))) 

Спасибо BondedDust.

+0

Опубликовать 'dput (head (test))' как отредактировать свой вопрос. –

ответ

2

Смотрите, если вы получите некоторый успех:

as.hexmode (names(test)) 

Выхода вы предлагаете предлагает стол-объект был создан и Teh первой строки будет (режим по своему характеру) names из записи видна ниже тех, шестигранные символы. Остается неясным, показываете ли вы содержимое внешнего текстового файла или выводете на консоль, чтобы это могло быть WAG.

> res <- scan(what="") 
1: A4 BB 08 6F E7 88 D9 10 11 12 AC CB C8 CC 
15: 
Read 14 items 
> as.hexmode(res) 
[1] "a4" "bb" "08" "6f" "e7" "88" "d9" "10" "11" "12" "ac" "cb" "c8" "cc" 
> dput(as.hexmode(res)) 
structure(c(164L, 187L, 8L, 111L, 231L, 136L, 217L, 16L, 17L, 
18L, 172L, 203L, 200L, 204L), class = "hexmode") 
+0

Я неправильно понял то, что делал. Я правильно использовал метод read.table(), потому что данные, которые у меня есть, находятся в формате таблицы, но мне нужно было создать таблицу из результирующего фрейма данных. Я отредактировал свое оригинальное сообщение с тем, что сделал то, что я хотел, но он кажется неуклюжим, и если у вас есть идеи для более элегантного решения, я был бы признателен. Спасибо за ваше время в любом случае. –

+0

Кажется, вы могли бы это сделать: 'table (unlist (lapply (test2, as.character))).Похоже, что уровни факторов отличаются от столбца к столбцу, поэтому вам сначала нужно преобразовать его в режим символов, чтобы «свернуть» их должным образом. Вы читаете R-код из «наизнанку». –

+0

Yup. Это работает. Спасибо и извинился за мой плохо сформулированный вопрос. –

Смежные вопросы