Я пытаюсь подмножество в паре данные на основе условий.
пара состоит из двух человек, наблюдаемых в течение 2 дней.R - Подмножество на основе условий для парных данных
Основные данные моего образца: 'hldid', 'cid', 'pid', 'diary', 'sex', 'day', 'main1'
.
'hldid'
относится к парному идентификатору данных,
'cid'
это парный данные дня идентификатор
'pid'
персонального идентификатор 'diary'
дневника (каждым люди должны быть заполнены 2 дневников) 'sex' 'day' 'main1'
относятся к пола, дня и наблюдаемых видов деятельности.
То, что я хотел бы сделать, это подмножество данных на основе 2-х условий:
- Данные должны быть в паре это означает, что
hldid
должно быть 2 лиц. Каждая пара должна быть сделана из мужчины и женщины. - Физические лица должны заполнить 2
diary
. Так 4 Дневник поhldid
Единственный способ я нашел, чтобы сделать это, чтобы сделать следующее:
Раздельное по полу
M = filter(dtaSimple, sex == 1)
W = filter(dtaSimple, sex == 2)
Merge по идентификатору в паре дней
dtaSimple_c = merge(M, W, by = 'cid', suffixes = c('_m', '_w'))
Затем я получу
cid hldid_m pid_m diary_m sex_m day_m main1_m hldid_w pid_w diary_w sex_w day_w main1_w
1 1250_1 1250 1250_2 1 1 1 0 1250 1250_1 1 2 1 0
2 1250_2 1250 1250_2 2 1 3 0 1250 1250_1 2 2 3 0
3 1294_1 1294 1294_2 1 1 6 0 1294 1294_1 1 2 6 0
4 1294_2 1294 1294_2 2 1 1 0 1294 1294_1 2 2 1 0
Я думаю, что это не совсем удовлетворительно. Каждая строка относится к первому дневнику каждого hldid
, и каждая колонка ссылается либо на мужчину, либо на женщин pair
.
Я хотел был бы сохранить исходную структуру данных 1 линии один человек и один день.
hldid cid pid diary sex day main1
1 1250 1250_1 1250_1 1 2 1 0
2 1250 1250_2 1250_1 2 2 3 0
3 1250 1250_1 1250_2 1 1 1 0
4 1250 1250_2 1250_2 2 1 3 0
.....
данные:
dtaSimple = structure(
list(
hldid = c(1250, 1250, 1250, 1250, 1294, 1294, 1294, 1294, 1352, 1352),
cid = c("1250_1", "1250_2", "1250_1", "1250_2", "1294_1", "1294_2", "1294_1", "1294_2", "1352_1", "1352_2"),
pid = c("1250_1", "1250_1", "1250_2", "1250_2", "1294_1", "1294_1", "1294_2", "1294_2", "1352_1", "1352_1"),
diary = c(1L, 2L, 1L, 2L, 1L, 2L, 1L, 2L, 1L, 2L),
sex = c(2L, 2L, 1L, 1L, 2L, 2L, 1L, 1L, 2L, 2L),
day = c(1L, 3L, 1L, 3L, 6L, 1L, 6L, 1L, 1L, 3L),
main1 = c(0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L)),
.Names = c("hldid", "cid", "pid", "diary", "sex", "day", "main1"),
row.names = c(NA, 10L),
class = "data.frame"
)
ОК, когда я получаю зависание 'ddply', я попадаю в dplyr-фильтрацию. R такой классный! – aaryno