Я гуглил свою ошибку, но это мне не помогло.
Получил фрейм данных со столбцом x.
unique(df$x)
Результат:
[1] "fc_social_media" "fc_banners" "fc_nat_search"
[4] "fc_direct" "fc_paid_search"
Когда я пытаюсь это:
df <- spread(data = df, key = x, value = x, fill = "0")
Я получил ошибку:
Error in `[.data.frame`(data, setdiff(names(data), c(key_var, value_var))) :
undefined columns selected
Но это очень странно, потому что я использовал функцию распространения (в одном скрипте) в разное время.
Итак, я погуглил, увидел несколько «решений»:
- Я удалил все «специальные» символы. Как видите, мои уникальные значения не содержат спецсимволов (почистил). Но это не помогло.
- Я проверил, есть ли столбцы с таким же именем. Но все имена столбцов уникальны.
@Грегор, @Акрун:
> str(df)
'data.frame': 100 obs. of 22 variables:
$ visitor_id : chr "321012312666671237877-461170125342559040419" "321012366667112237877-461121705342559040419" "321012366661271237877-461170534255901240419" "321012366612671237877-461170534212559040419" ...
$ visit_num : chr "1" "1" "1" "1" ...
$ ref_domain : chr "l.facebook.com" "X.co.uk" "x.co.uk" "" ...
$ x : chr "fc_social_media" "fc_social_media" "fc_social_media" "fc_social_media" ...
$ va_closer_channel : chr "Social Media" "Social Media" "Social Media" "Social Media" ...
$ row : int 1 2 3 4 5 6 7 8 9 10 ...
$ : chr "0" "0" "0" "0" ...
$ Hard Drive : chr "0" "0" "0" "0" ...
dput(droplevels(head(df)))
, и мы попробуем посмотреть, что происходит с вашей структурой данных. ($
использует частичное совпадение, поэтомуdf$x
отображение результата не обязательно означает, что у вас есть столбец с именемx
). - person Gregor Thomas   schedule 16.01.2018str(df)
- person akrun   schedule 16.01.2018""
- person akrun   schedule 16.01.2018df <- data.frame(x = c("fc_social_media", "fc_banners", "fc_nat_search", "fc_direct", "fc_paid_search"), x1 = 1:5);names(df)[2] <- ""; spread(df, x, x) #Error in
[.data.frame(data, setdiff(names(data), c(key_var, value_var))) :
неопределенные столбцы - person akrun   schedule 16.01.2018