У меня следующая проблема: мне нужно запустить каждое подмножество кадра данных, создавая новые записи для переменной роль в зависимости от 2 условий: совпадение имен свидетелей и жителей домохозяйства.
Фрейм данных (df) выглядит следующим образом: у меня есть 10 переменных ( ID , birth_year , фамилия - Name2nd -, роль в домашнем хозяйстве - роль -, домашнее хозяйство - чч -, имя - Имя1st -, имя свидетеля1 - имя1stW1 -, фамилия свидетеля1 - name2ndW1 -, отношение с ИД и отношение с супругом ИД - отношение2 -).
Вся таблица подмножества переменной чч , в которой собраны все идентификаторы в одном домохозяйстве. Последние четыре переменные показывают имя первого свидетеля в браке удостоверения личности, а также их отношение к этому удостоверению - отношение - и к их супругу - отношение2 -. Например, в моем примере ниже, ID 1 Альберт Снейдерс , чей свадебный свидетель Корнелис Мартин . Корнелис Мартин - его брат ( отношение ) и шурин супруга ( отношение 2 ).
Теперь здесь, так как Корнелис Мартин также живет в том же домохозяйстве, что и ID 1, и мы знаем соотношение между ID 1 и 2, мне нужно изменить значение переменной role от NA до «шурина» (другими словами, для значения комбинации двух отношений: отношение - отношение2 ).
ID birth_year Name2nd role hh Name1st name2ndW1 name1stW1 relation relation2
1 1877 Snijders HeadOfHousehold 1 Albert Marteen Kornelis brother brother-in-law
2 1885 Marteen NA 1 Kornelis NA NA NA NA
3 1897 Snijders NA 1 Marja NA NA NA NA
4 1892 Zelstra NA 1 Inge NA NA NA NA
5 1878 Kuipers HeadOfHousehold 2 Hans Snijders Marja friend friend
6 1870 Marteen NA 2 Joris Marteen Joris NA NA
7 1897 Wals NA 2 Michel NA NA NA NA
8 1900 Venstra NA 2 Joop NA NA NA NA
9 1900 Lippe HeadOfHousehold 3 Jaap NA NA NA NA
10 1905 Flachs NA 3 Klaas Alb Kuipers NA NA
11 1920 Lippe NA 3 Mathias NA NA NA NA
12 1922 Lippe NA 3 Waltfried Flachs Klaas cousin cousin
Вы можете получить таблицу следующим образом:
A <- read.table(header=T, text="ID birth_year Name2nd role hh Name1st name2ndW1 name1stW1 relation relation2
1 1877 Snijders HeadOfHousehold 1 Albert Marteen Kornelis brother brother-in-law
2 1885 Marteen NA 1 Kornelis NA NA NA NA
3 1897 Snijders NA 1 Marja NA NA NA NA
4 1892 Zelstra NA 1 Inge NA NA NA NA
5 1878 Kuipers HeadOfHousehold 2 Hans Snijders Marja friend friend
6 1870 Marteen NA 2 Joris Marteen Joris NA NA
7 1897 Wals NA 2 Michel NA NA NA NA
8 1900 Venstra NA 2 Joop NA NA NA NA
9 1900 Lippe HeadOfHousehold 3 Jaap NA NA NA NA
10 1905 Flachs NA 3 Klaas Kuipers Alb NA NA
11 1920 Lippe NA 3 Mathias NA NA NA NA
12 1922 Lippe NA 3 Waltfried Flachs Klaas cousin cousin "
, as.is = T)
Оказавшись здесь, у меня есть два вопроса. То, что я пытался сделать, это группировать по домохозяйствам (чч), и если какой-либо член домохозяйства также стал свидетелем брака какого-либо члена домохозяйства, то измените значение его роли (на тех, которые фигурируют в переменных отношения) .
Я думал о ddply:
df <- ddply (df,. (Hh), transform, role = ifelse ((name2ndW1 == Name2nd & name1stW1 == Name1st), вставка (relatie-relatie2), NA)) </p>
Но это не работает. Я не получаю никаких изменений в «роли». Это моя главная забота.
Мой второй вопрос - не столь важный - касается случая, когда я решил не выполнять этот ifelse тест для подмножества (чч), но для всего набора данных. Есть ли какой-либо код, подобный приведенному выше, например
df <- ddply (df,. (), Transform, role = ifelse ((name2ndW1 == Name2nd & name1stW1 == Name1st), вставка (relatie-relatie2), NA)) </p>
без группировки переменных
Мой ожидаемый результат будет:
ID birth_year Name2nd role hh Name1st name2ndW1 name1stW1 relation relation2
1 1877 Snijders HeadOfHousehold 1 Albert Marteen Kornelis brother brother-in-law
2 1885 Marteen brother-brother-in-law 1 Kornelis NA NA NA NA
3 1897 Snijders NA 1 Marja NA NA NA NA
4 1892 Zelstra NA 1 Inge NA NA NA NA
5 1878 Kuipers HeadOfHousehold 2 Hans Snijders Marja friend friend
6 1870 Marteen NA 2 Joris Marteen Joris NA NA
7 1897 Wals NA 2 Michel NA NA NA NA
8 1900 Venstra NA 2 Joop NA NA NA NA
9 1900 Lippe HeadOfHousehold 3 Jaap NA NA NA NA
10 1905 Flachs cousin-cousin 3 Klaas Kuipers Alb NA NA
11 1920 Lippe NA 3 Mathias NA NA NA NA
12 1922 Lippe NA 3 Waltfried Flachs Klaas cousin cousin
Любые советы приветствуются, и большое спасибо за чтение.