У меня простой вопрос. Я хочу сделать таблицу частот с 3 переменными моей исходной таблицы. Если я сделаю
as.data.frame(table(df$var1,df$var2,df$var3))
, поскольку он предоставляет каждую возможную комбинацию из 3 переменных - и у меня есть много значений для каждой переменной - я получаю ошибку: «попытка составить таблицу с> = 2 ^ 31 элементами».
Проблема в том, что многие комбинации фактически пусты. Другими словами, для многих из этих возможных комбинаций частота равна 0, и поэтому мне было интересно, как заставить R учитывать только ненулевые частоты (чтобы функция table () работала с моими 3 переменными без выдача сообщения об ошибке.
Есть идеи?
Большое спасибо за чтение.
Очень упрощенная таблица (не моя оригинальная - поскольку у меня много значений, так что декартово произведение трех из них при запуске "as.data.frame (table ()) ¨ выходит за пределы 2 ^ 31 элементов - может быть :
var1 var2 var3 var4 var5
0 a1 1234 a 1
1 a2 1234 b 2
1 a2 1235 c 2
1 a2 1235 a 7
1 a1 1235 d 3
И то, что я хочу, это частоты первых трех переменных вместе через код:
as.data.frame(table(df$var1,df$var2,df$var3))
Это то, что я пытался:
subset(table(df$var1,df$var2,df$var3),table(df$var1,df$var2,df$var3)$Freq!='0')
Или
droplevels(table(df$var1,df$var2,df$var3))
без удачи.
В случае, описанном для моего примера, код as.data.frame (таблица (df $ var1, df $ var2, df $ var3)) предоставляет такую таблицу, как вы знаете, создавая дополнительную переменную "Freq «который дает время каждой комбинации из 3 переменных в строке -:
var1 var2 var3 Freq
0 a1 1234 1
0 a1 1235 0
0 a2 1234 0
0 a2 1235 0
1 a1 1234 0
1 a1 1235 1
1 a2 1234 1
1 a2 1235 1
Но, как я уже сказал, так как есть много строк с частотой 0, заставляя R не учитывать их при запуске таблицы функций (), можно значительно упростить вычисления с гораздо меньшим количеством элементов, чем 2 ^ 31, так что результат может быть предоставлен без какого-либо сообщения об ошибке. Так что, если возможно, после применения этого обходного пути, результат, который я ожидаю, будет примерно таким (где все строки с Freq = 0 не рассчитываются при запуске table ()):
var1 var2 var3 Freq
0 a1 1234 1
1 a1 1235 1
1 a2 1234 1
1 a2 1235 1