Этот вопрос основан на следующем сообщении с дополнительными требованиями ( Перебирать столбцы в dplyr? ).
Исходный код выглядит следующим образом:
df <- data.frame(col1 = rep(1, 15),
col2 = rep(2, 15),
col3 = rep(3, 15),
group = c(rep("A", 5), rep("B", 5), rep("C", 5)))
for(col in c("col1", "col2", "col3")){
filt.df <- df %>%
filter(group == "A") %>%
select_(.dots = c('group', col))
# do other things, like ggplotting
print(filt.df)
}
Моя цель - вывести таблицу частот для каждой уникальной комбинации COL по GROUP.В текущем примере указывается фильтр dplyr, основанный на значении GROUP A, B или C. В моем случае я хочу выполнить итерацию (цикл) по списку значений в GROUP (list <- c ("A", "B")., "C") и сгенерируйте таблицу частот для каждой комбинации. </p>
Таблица частот основана на счетах. Для Col1 результат будет выглядеть примерно так, как показано в таблице ниже. Пример набора данных упрощен. Мой реальный набор данныхявляется более сложным с несколькими «значениями» на «группу». Мне нужно перебрать Col1-Col3 по группам.
значение группы n prop
A 1 5 .1
B 2 5 .1
C 3 5 .1
Вот лучший пример таблицы частот: Как использовать dplyr для генерации таблицы частот
Я боролся с этим дляпару дней, и я мог бы сделать лучше с моим примером. Спасибо за посты. Вот то, что я в конечном итоге сделал, чтобы решить эту проблему. В результате ряд таблиц частот для каждого столбца и каждого уникального значения, найденного в группе. Iимел 3 столбца (col1, col2, col3) и 3 уникальныхзначения в группе (A, B, C), 3х3.Результатом являются 9 частотных таблиц и частотная таблица для каждого значения группы, которое не имеет смысла.Я уверен, что есть лучший способ сделать это.Вывод генерирует некоторую маркировку, которая полезна.
# Build unique group list
group <- unique(df$group)
# Generate frequency tables via a loop
iterate_by_group <- function(x)
for (i in 1:length(group)){
filt.df <- df[df$group==group[i],]
print(lapply(filt.df, freq))
}
# Run
iterate_by_group(df)