Подстановка столбца фрейма данных его соответствующими уровнями и применение функции к каждому подмножеству - PullRequest
0 голосов
/ 24 мая 2018

У меня есть некоторый код, который работает, когда мои значения имеют только один уровень фактора в столбце "short_desc".Он принимает значение «Value» и выводит соответствующий диапазон децилей в столбце «Value.fc».

Data.frame перед манипуляцией выглядит следующим образом:

dataframe before manipulation

Я применяю эти строки кода к кадру данных "df":

df <- df %>%
mutate(Value.fc = cut2(Value, g=10),
     Value.fc = factor(sapply(str_extract_all(Value.fc, "\\d+"),
                              function(x) paste(x, collapse="-"))),
     Value.fc = reorder(Value.fc, Value)) 

И в результате получается столбец "Value.fc", который представляет собой диапазоны децильных коэффициентов:

manipulated dataframe

Проблема возникает, когда столбец "short_desc" имеет много уровней.

Я не могу подстановить наблюдения к "short_desc" и применитькод для получения дециля каждого подмножества "Value.fc".Результирующие диапазоны децильных коэффициентов неверны.Я использовал следующий код:

df <- df %>%
group_by(short_desc) %>%
mutate(Value.fc = cut2(Value, g=10),
     Value.fc = factor(sapply(str_extract_all(Value.fc, "\\d+"),
                              function(x) paste(x, collapse="-"))),
     Value.fc = reorder(Value.fc, Value)) %>%
ungroup()

Полученный кадр данных выглядит следующим образом:

grou_by() dataframe

Будем благодарны за любые указания.Пример данных:

dput(head(df)) structure(list(state = c("Iowa", "Iowa", "Illinois"), short_desc = c("Corn, grain - yield, measured in bu / acre", "Corn, silage - yield, measured in tons / acre", "Corn, grain - yield, measured in bu / acre"), Value = c(137.8, 13.5, 153.3), FIPS = c("19001", "19001", "17001"), Value.fc = c("135-0-150", "13-0-14-5", "150-4-157"))
...