#r
Вопрос:
У меня есть набор данных, содержащий 5326 obs и 33 переменные: первые 15 переменных-это название страны, код страны, год наблюдения и другие данные.Переменные от 15 до 33-это данные, которые я должен использовать. эти данные представляют собой некоторые показатели по странам по годам конкретной политической партии. Моя цель состоит в следующем: возьмите год-gt;для каждой страны используйте данные с ближайшим меньшим годом,а для каждой переменной суммируйте их по каждой стране. таким образом, результатом будет матрица , в первом столбце которой будет указано название страны, во втором-год, а в остальных 17-сумма переменных по странам. итак, как я могу подойти к этой проблеме? если необходима дополнительная информация, пожалуйста, не стесняйтесь спрашивать меня, спасибо
gt; str(party.osp5) tibble [5,326 x 33] (S3: tbl_df/tbl/data.frame) $ paenname : chr [1:5326] "Party of the Democratic Revolution" "Party of the Democratic Revolution" "Party of the Democratic Revolution" "Party of the Democratic Revolution" ... $ pashname : chr [1:5326] "PRD" "PRD" "PRD" "PRD" ... $ pf_party_id : num [1:5326] 216 216 216 216 216 216 216 216 216 216 ... $ country_name : chr [1:5326] "Mexico" "Mexico" "Mexico" "Mexico" ... $ country_id : num [1:5326] 3 3 3 3 3 3 3 3 3 3 ... $ country_text_id: chr [1:5326] "MEX" "MEX" "MEX" "MEX" ... $ year : num [1:5326] 1991 1994 1997 2000 2003 ... $ codingstart : num [1:5326] 1940 1940 1940 1940 1940 1940 1940 1940 1940 1940 ... $ codingend : num [1:5326] 2018 2018 2018 2018 2018 ... $ project : num [1:5326] 0 0 0 0 0 0 0 0 0 0 ... $ COWcode : num [1:5326] 70 70 70 70 70 70 70 70 70 70 ... $ e_regiongeo : num [1:5326] 17 17 17 17 17 17 17 17 17 17 ... $ e_regionpol : num [1:5326] 2 2 2 2 2 2 2 2 2 2 ... $ e_regionpol_6C : num [1:5326] 2 2 2 2 2 2 2 2 2 2 ... $ paseatshare : num [1:5326] 8.2 14.2 25 13 19.4 25.2 14.2 20.8 11.2 4.2 ... $ illiberal: num [1:5326] 1.93 2.93 4.35 2.76 5.18 ... $ popul : num [1:5326] 6.22 10.62 17.3 9.11 13.6 ... $ papariah_osp : num [1:5326] 19.4 36.4 65 34.8 50.2 ... $ paanteli_osp : num [1:5326] 26.5 44.7 68.3 36.6 53.5 ... $ papeople_osp : num [1:5326] 23.6 40.9 70.7 36.8 56 ... $ paopresp_osp : num [1:5326] 12.8 23.4 45.5 24.9 33.1 ... $ paplur_osp : num [1:5326] 28.3 48.4 87.9 44.3 63.5 ... $ paminor_osp : num [1:5326] 22.3 39.4 69.4 36.1 51 ... $ paviol_osp : num [1:5326] 29.4 53.5 94.2 47.9 71.8 ... $ paimmig_osp : num [1:5326] 21 36.4 64.1 34.4 51.3 ... $ palgbt_osp : num [1:5326] 22.2 39.1 70.3 38.5 55.7 ... $ paculsup_osp : num [1:5326] 22 38.1 67 34.8 46.7 ... $ parelig_osp : num [1:5326] 30.9 53.6 94.3 49 73.2 ... $ pagender_osp : num [1:5326] 16 27.7 55.4 37.7 54 ... $ pawomlab_osp : num [1:5326] 25.7 45.6 80.2 43.1 64.4 ... $ pariglef_osp : num [1:5326] 13.6 23.5 41.3 21.5 32.1 ... $ pawelf_osp : num [1:5326] 32.8 56.7 99.9 51.9 75.3 ... $ paclient_osp : num [1:5326] 17.4 30.1 63.6 35.9 56.4 ...
результатом dput(head(df))является:
dput(head(party.osp5)) structure(list(v2paenname = c("Party of the Democratic Revolution", "Party of the Democratic Revolution", "Party of the Democratic Revolution", "Party of the Democratic Revolution", "Party of the Democratic Revolution", "Party of the Democratic Revolution"), v2pashname = c("PRD", "PRD", "PRD", "PRD", "PRD", "PRD"), pf_party_id = c(216, 216, 216, 216, 216, 216), country_name = c("Mexico", "Mexico", "Mexico", "Mexico", "Mexico", "Mexico"), country_id = c(3, 3, 3, 3, 3, 3), country_text_id = c("MEX", "MEX", "MEX", "MEX", "MEX", "MEX" ), year = c(1991, 1994, 1997, 2000, 2003, 2006), codingstart = c(1940, 1940, 1940, 1940, 1940, 1940), codingend = c(2018, 2018, 2018, 2018, 2018, 2018), project = c(0, 0, 0, 0, 0, 0), COWcode = c(70, 70, 70, 70, 70, 70), e_regiongeo = c(17, 17, 17, 17, 17, 17), e_regionpol = c(2, 2, 2, 2, 2, 2), e_regionpol_6C = c(2, 2, 2, 2, 2, 2), v2paseatshare = c(8.2, 14.2, 25, 13, 19.4, 25.2), v2xpa_illiberal = c(1.927, 2.9252, 4.35, 2.756, 5.1798, 9.3996), v2xpa_popul = c(6.2238, 10.6216, 17.3, 9.113, 13.5994, 20.7396), v2papariah_osp = c(19.4094, 36.3662, 65, 34.762, 50.246, 67.8888), v2paanteli_osp = c(26.5352, 44.7442, 68.35, 36.556, 53.4858, 80.8416), v2papeople_osp = c(23.6078, 40.8818, 70.7, 36.764, 56.0272, 86.184), v2paopresp_osp = c(12.8494, 23.3732, 45.45, 24.895, 33.1352, 31.4748), v2paplur_osp = c(28.2572, 48.3794, 87.875, 44.304, 63.4768, 80.2116), v2paminor_osp = c(22.3204, 39.4334, 69.425, 36.101, 51.0414, 59.9508), v2paviol_osp = c(29.3888, 53.4772, 94.15, 47.892, 71.8382, 87.57), v2paimmig_osp = c(21.0166, 36.3946, 64.075, 34.372, 51.2936, 65.4696), v2palgbt_osp = c(22.1564, 39.1352, 70.325, 38.48, 55.6974, 77.0112), v2paculsup_osp = c(21.976, 38.056, 67, 34.84, 46.6764, 60.6312), v2parelig_osp = c(30.9386, 53.5766, 94.325, 49.049, 73.1962, 95.0796), v2pagender_osp = c(15.9982, 27.7042, 55.425, 37.713, 53.9708, 65.9736), v2pawomlab_osp = c(25.7398, 45.5536, 80.2, 43.147, 64.3886, 86.1336), v2pariglef_osp = c(13.5546, 23.4726, 41.325, 21.489, 32.0682, 39.7908), v2pawelf_osp = c(32.7508, 56.7148, 99.85, 51.922, 75.2526, 97.7508), v2paclient_osp = c(17.3758, 30.0898, 63.575, 35.893, 56.4152, 73.2816)), row.names = c(NA, -6L), class = c("tbl_df", "tbl", "data.frame"))
Комментарии:
1. Это звучит так, как будто вы хотите к
arrange
году, а затемsummarize
использоватьlag
. Найдите эти функции изdplyr
(пакета).2. к настоящему времени я пытаюсь с этим:
testlt;- party.osp5 %gt;% group_by(country_name) %gt;% mutate(keep.delete = ifelse(H - year == min(H - year), 'keep', 'delete'))
данные3. пожалуйста, приложите образец ваших данных с помощью dput()
4. я не могу этого сделать, потому что это огромный набор данных
5. Используйте либо
dput(head(df))
то, либо другое, либо потрудитесь создать поддельный фрейм данных, отражающий проблему , которую вы хотите решить