Я хотел бы создать новую переменную, используя информацию в другом месте моего фрейма данных. Это кажется простым, но я бы хотел назначить уровни новой переменной пропорционально.
У меня есть датафрейм:
dd<-read.table(text="
group piece answer
group1 A noise
group1 A silence
group1 A silence
group1 B silence
group1 B loud_noise
group1 B noise
group1 B loud_noise
group1 B noise
group2 C silence
group2 C silence", header=TRUE)
Я хотел бы создать новую переменную "major_annotation" с двумя уровнями: хорошим и плохим. Хороший означает, что у каждой части было согласие большинства (> 55%). Плохо означает, что у части не было согласия большинства.
group piece answer majority_agreement
group1 A noise good
group1 A silence good
group1 A silence good
group1 B silence bad
group1 B loud_noise bad
group1 B noise bad
group1 B loud_noise bad
group1 B noise bad
group2 C silence good
group2 C silence good
Я могу сделать это в двоичном (все или без соглашения):
newdf <- df %>%
group_by(group) %>%
mutate(majority_agreement = ifelse(length(unique(answer)) <= 1,
'good',
ifelse(length(unique(answer) > 1) &
(length(unique(answer)) >= 2), 'bad', 'bad'))) %>%
as.data.frame
Как я могу сделать это пропорционально, хотя?