У меня есть проблема с функцией mutate
в dplyr, и ошибка говорит;Ошибка: несовместимый размер при мутировании в dplyr
Error: incompatible size (0), expecting 5 (the group size) or 1
Есть несколько предыдущих сообщений, и я пробовал некоторые из решений, но мне не повезло.
group-factorial-data-with-multiple-factors-error-incompatible-size-0-expe
r-dplyr-using-mutate-with-na-omit-causes-error-incompatible-size-d
grouped-operations-that-result-in-length-not-equal-to-1-or-length-of-group-in-dp
Вот что я пытался,
ff <- c(seq(0,0.2,0.1),seq(0,-0.2,-0.1))
flip <- c(c(0,0,1,1,1,1),c(1,1,0,0,0,0))
df <- data.frame(ff,flip,group=gl(2,6))
> df
ff flip group
1 0.0 0 1
2 0.1 0 1
3 0.2 1 1
4 0.0 1 1
5 -0.1 1 1
6 -0.2 1 1
7 0.0 1 2
8 0.1 1 2
9 0.2 0 2
10 0.0 0 2
11 -0.1 0 2
12 -0.2 0 2
Я хочу, чтобы добавить новую группу под названием c1
и c2
на основе некоторых условий следующим
dff <- df%>%
group_by(group)%>%
mutate(flip=as.numeric(flip),direc=ifelse(c(0,diff(ff))<0,"backward","forward"))%>%
spread(direc,flip)%>%
arrange(group,group)%>%
mutate(c1=ff[head(which(forward>0),1)],c2=ff[tail(which(backward>0),1)])
Error: incompatible size (0), expecting 5 (the group size) or 1
Я также добавить do
и попытался
do(data.frame(., c1=ff[head(which(.$forward>0),1)],c2=ff[tail(which(.$backward>0),1)]))
Error in data.frame(., c1 = ff[head(which(.$forward > 0), 1)], c2 = ff[tail(which(.$backward > : arguments imply differing number of rows: 5, 1, 0
, но когда я только mutate
c1
колонка все, кажется, работает. Зачем?
последний строка должна быть 'mutate (c1 = head (ff [forward> 0], 1), c2 = tail (ff [назад> 0], 1))' (Оба дают NA, хотя в этом примере) – Sotos
Нет значения в группа 2, для которой «назад» больше 0. – alistaire
@alistaire Даже нет никакой ценности, я смогу получить хотя бы NA v для пустых строк? – Alexander