У меня есть воспроизводимый df
, где есть повторные пробы от человека. Для каждого образца я отслеживаю заказ, который были взяты сэмплами, и носителем (A или B).Создание новой колонки на основе двух столбцов в кадре данных
dat <- data.frame(IndID = factor(c(1,1,2,2,2,3,3)),
Order = c(1,2,1,2,3,1,2),
Media = factor(c("A", "B", "B","A","B","A", "A")))
dat
IndID Order Media
1 1 1 A
2 1 2 B
3 2 1 B
4 2 2 A
5 2 3 B
6 3 1 A
7 3 2 A
Я хочу сделать новый столбец, который содержит СМИ и число, которое означает орден выборки в пределах каждого уровня средств массовой информации. Говоря иначе, группируя IndID и Media, я хочу создать новый столбец, который заказывает образцы. Для каждого человека, если в двух разных носителях (например, IndID 1) есть только два образца, новое значение будет «A1» и «B1». Если есть два образца из одного и того же носителя, новые значения должны быть «B1» и «B2» в порядке, следующем за порядком выборки.
С учетом приведенных выше данных, я пытаюсь создать следующий столбец
dat$WantThis <- c("A1", "B1","B1", "A1","B2", "A1", "A2")
IndID Order Media WantThis
1 1 1 A A1
2 1 2 B B1
3 2 1 B B1
4 2 2 A A1
5 2 3 B B2
6 3 1 A A1
7 3 2 A A2
Я пытался использовать dplyr
пакет, но не можете соединить точки, что должно быть включено в качестве 2-го аргумента paste
.
dat2 <- as.data.frame(dat %>% group_by(IndID, Media) %>% mutate(MediaOrder = paste0(Media, ????)))
Заранее спасибо. Я приветствую любые предложения.
'Даты%>% group_by (IndID, СМИ)%>% мутирует (WantThis = paste0 (СМИ, row_number()))', вероятно, –
'dat2 <- dat %>% group_by (IndID, СМИ)%>% мутирует (WantThis = paste0 (Media, row_number())) генерирует ошибку в ранге (x, ties.method = "first", na.last = "keep"): аргумент "x" отсутствует, без значения по умолчанию –
Какая версия 'dplyr' у вас есть? Он отлично работает против меня. Вы можете попробовать 'mutate (WantThis = paste0 (Media, 1: n())) вместо этого может быть –