У меня следующая структура данных: Встречи в группах.Группы встречались по-разному часто, и количество членов группы варьировалось для каждой встречи.
$ GroupID : chr "1" "1" "1" "1" ...
$ groupnames : chr "A&M" "A&M" "A&M" "A&M" ...
$ MeetiID : chr "1" "1" "2" "2" ...
$ Date_Meetings : chr "43293" "43293" "43298" "43298" ...
$ PersonID : num 171 185 171 185 185 113 135 113 135 113 ...
$ v_165 : chr "3" "3" "4" "3" ...
$ v_166 : chr "2" "2" "3" "3" ...
$ v_167 : chr "2" "4" "4" "3" ...
$ v_168 : chr "6" "7" "4" "5" ...
$ problemtypes_categories: chr "Knowledgeproblem" "Knowledgeproblem" "Motivationalproblem" "Coordinationproblem" ...
$ v_165_dicho : num 0 0 0 0 1 1 1 0 0 1 ...
$ v_166_dicho : num 0 0 0 0 0 0 0 0 0 0 ...
$ v_167_dicho : num 0 0 0 0 1 1 0 0 0 0 ...
Теперь мне нужно создать новую переменную, которая должна быть двоичной (0/1) с именем Agreement_levels.Таким образом, каждый раз, когда человек в одной группе - в отношении одной и той же учебной встречи - имеет одну и ту же категорию типов проблем, чем другие учащиеся из той же группы на одной и той же встрече, оба учащиеся (или три или четыре, в зависимости отразмер группы для соответствующего собрания) должен получить значение 1 в переменной соглашения, в противном случае все они должны получить 0. Каждый раз, когда у человека (например, среди четырех учащихся) уже есть другая категория проблем, чем у других, появляется 0 напеременная соглашения для всех.Если в наборе данных для одного и того же собрания присутствует только 1 человек, должен быть согласен НС.Однако, когда у одного человека есть NA в переменной типа проблемы, и в наборе данных для одного и того же собрания есть 2 человека, оба получают 0 при согласии;но если в наборе данных есть 4 человека для одной и той же встречи, и у одного из них есть NA с типом проблемы, то только этот человек, но не остальные, получают NA при согласии.
Я уже написал команду, ноон еще не работает и все еще не учитывает NA:
GroupID1 <- df$GroupID[1:nrow,]
TreffID1 <- df$TreffID[1:nrow,]
for(i in 1:(GroupID1 -1){
for(j in 1:(TreffID1 -1){
if(df[i, 3] == df[i+1, 3]-1){
if(df[i, 15] == df[i+1, 15]-1){
df[c(i, i+1), 28] <- 1,
df[c(i, i+1), 28] <- 0
Заранее большое спасибо.
dput(head(df))
structure(list(GroupID = c("1", "1", "1", "1", "1", "2"), TreffID = c("1", "1",
"2", "2", "3", "1"), PersonID = c(171, 185, 171, 185,
185, 113), problemtypen_oberkategorien = c("Verständnisprobleme",
"Verständnisprobleme", "Motivationsprobleme", "Motivationsprobleme",
"Motivationsprobleme", "Motivationsprobleme"), passung.exkl = c("0",
"0", "0", "0", "1", "1")), row.names = c(NA, -6L), class = c("tbl_df",
"tbl", "data.frame"))