У меня есть набор данных, подобный этому:Подменю номинальные переменные в R
x <- sample(c("A", "B", "C", "D"), 1000, replace=TRUE, prob=c(0.1, 0.2, 0.65, 0.05))
y <- sample(1:40, 1000, replace=TRUE)
d <- data.frame(x,y)
str(d)
'data.frame': 1000 obs. of 2 variables:
$ x: Factor w/4 levels "A","B","C","D": 1 3 3 2 3 3 3 3 4 3 ...
$ y: int 28 35 14 4 34 36 30 35 26 9 ...
table(d$x)
A B C D
115 204 637 44
Таким образом, в моем реальном наборе данных у меня есть несколько тысяч этих категорий (A, B, C, D).
str()
моих реальных данных
str(realdata)
data.frame': 346340 obs. of 91 variables:
$ author : Factor w/ 42590 levels "-jon-","--LZR--",..: 1962 3434 1241 7666 6235 2391 1196 2779 1881 339 ...
$ created_utc : Factor w/ 343708 levels "2015-05-01 02:00:41",..: 14815 23163 2281 3569 5922 7211 15783 5512 13485 8591 ...
$ group : Factor w/ 5 levels "xyz","abc","bnm",..: 2 2 2 2 2 2 2 2 2 2 ...
....
Теперь я хочу, чтобы подмножество данных, так что я только строки тех $ авторов (или $x
в d
dataframe) в моем новом dataframe, которые имеют более чем 100 записей.
Я попытался следующие:
dnew <- subset(realdata, table(realdata$author) > 100)
Это дает мне результат, но, кажется, были включены не все записи авторов. Хотя это должно быть больше, я просто получаю 1,3% строк полного набора данных. Я проверил его вручную (с помощью excel), и он должен быть более чем (примерно 30%). Ручной анализ показал, что 1,2% от $ author составляют 30% записей. Кажется, он просто дал мне один ряд с $ author, у которого более 100 записей, но не все его записи.
Знаете ли вы, как это исправить?
спасибо, что сработало !!!! –
@akrun У меня нет подсказки, что вы добавили, что для моего ответа я использовал комбинацию из двух ссылок, я попробовал его, а затем опубликовал, вот это http://stackoverflow.com/questions/24835233/subset-based-on- частотный уровень http://stackoverflow.com/questions/1195826/drop-factor-levels-in-a-subsetted-data-frame Ваш ответ на базу R также работает. Я тоже это проверил, уровни все еще сохранялись данных, поэтому я бросил их по второй ссылке. Спасибо. –