#r #dataframe
Вопрос:
У меня есть список из 13 кадров данных, первые несколько строк первого кадра данных выглядят следующим образом:
> Visit.data_allyears[[1]]
SiteName year PAdata Longitude Latitude totalspp totalhours lhours temperature rainfall NDVI
1 2229AB 2007 0 29.375 -22.125 0.27388999 0.04145321 0.359057436 0.7571729 0.34862768 0.25624133
2 2230CA 2007 0 30.125 -22.625 -0.46728113 -0.43741429 -0.460164072 0.8803066 -0.76683748 -0.15804871
3 2230DA 2007 0 30.625 -22.625 -0.79669052 0.28088696 0.670510998 1.0815264 -0.86448501 -0.68218838
4 2230DB 2007 0 30.875 -22.625 -1.99079956 -0.43741429 -0.460164072 1.3638363 -0.92470284 -0.86108636
5 2231AC 2007 0 31.125 -22.375 2.82681276 -0.43741429 -0.460164072 0.8652892 1.39814838 1.64976237 NA
Записи имен сайтов могут повторяться несколько раз. Для каждого кадра данных, если имя сайта повторяется более 50 раз — случайным образом выберите 50 строк из всех повторяющихся строк этого имени сайта и удалите остальные. Все остальное должно оставаться как есть. Поэтому, если сайт не повторяется более 50 раз, просто оставьте как есть.
Как бы это можно было сделать?
Ответ №1:
Вы можете использовать slice_sample
от dplyr
.
library(dplyr)
lapply(Visit.data_allyears, function(x) {
x %>% group_by(SiteName) %>% slice_sample(n = 50)
})
Комментарии:
1. Я получаю следующую ошибку:Ошибка в методе использования(«group_by») : нет применимого метода для «group_by», применяемого к объекту класса «фактор»
2. Как вы применяете этот код? Вы копируете его таким, какой он есть? Этот код должен быть применен к списку кадров данных, которые я использовал
lapply
.