Я работаю с списками отдельных списков, и каждый список содержит большое количество кадров данных. Каждый кадр данных содержит 3 переменные (cluster
, grp
, value
), такие как (пример 1 список)R - вставить сложные стилизованные значения из списка
$`0`
Source: local data frame [1 x 3]
cluster grp value
(int) (int) (chr)
1 1 0 c Personal Care-277
$`1`
Source: local data frame [1 x 3]
cluster grp value
(int) (int) (chr)
1 1 1 b Unpaid-1
$`2`
Source: local data frame [1 x 3]
cluster grp value
(int) (int) (chr)
1 1 2 c Personal Care-1
То, что я хотел бы это суммировать эту информации в векторе для того, чтобы анализировать их легко [выхода хотел]:
cluster 1 : (c Personal Care-277) - (b Unpaid-1) - (c Personal Care-1)
То, что я пытался сделать следующее:
library(plyr)
library(dplyr)
1) Я сначала объединил весь фрейм данных на cluster
. Я предпочитаю использовать join_all
, который, кажется, отлично работает для работы, за исключением странного вывода colname
.
dt1 = dt %>% lapply(fgr) %>%
join_all(by = 'cluster') %>%
`colnames<-`(c("cluster", paste('t', 1:3, sep = '')))
2) Тогда я использовал paste
положить значения в стилизованной моде вместе
dt1 %>%
mutate(print = paste('cluster: ', cluster, ' (' , t1, ')', '(', t2 , ')', '(', t3 , ')', sep="")) %>%
select(print)
# print
# 1 cluster: 1 (c Personal Care-277)(b Unpaid-1)(c Personal Care-1)
Проблема заключается в том, что у меня есть много различных списков со многим dataframes и некоторые dataframes имеют неодинаковую length
. Здесь список в примере содержит 3 элемента t1
t2
t3
(плюс cluster
). Но в некоторых списках есть dataframes с 4 или более элементами.
Вопросы
Я хотел сначала узнать, есть ли способ автоматизировать этот paste
, чтобы избежать написания t1
, t2
, и так далее вручную и во-вторых, если вы имели какой-либо более полное представление для рутины, чем тот, который я показал здесь.
Благодаря
данные (список)
dt = list(structure(list(cluster = structure(1L, .Label = "1", class = "factor"),
grp = structure(1L, .Label = "0", class = "factor"), value = structure(1L, .Label = "c Personal Care-277", class = "factor")), .Names = c("cluster",
"grp", "value"), row.names = c(NA, -1L), class = "data.frame"),
structure(list(cluster = structure(1L, .Label = "1", class = "factor"),
grp = structure(1L, .Label = "1", class = "factor"),
value = structure(1L, .Label = "b Unpaid-1", class = "factor")), .Names = c("cluster",
"grp", "value"), row.names = c(NA, -1L), class = "data.frame"),
structure(list(cluster = structure(1L, .Label = "1", class = "factor"),
grp = structure(1L, .Label = "2", class = "factor"),
value = structure(1L, .Label = "c Personal Care-1", class = "factor")), .Names = c("cluster",
"grp", "value"), row.names = c(NA, -1L), class = "data.frame"))
Ваш выходной сигнал дает ошибки 'Ошибка в структуре (список (cluster = 1L, grp = 0L, value =" c Personal Care-277 "),: Объект 'cluster' not found' – akrun
Основываясь на ожидаемом выходе, возможно, 'bind_rows (dt)%>% summary (value = paste (value, collapse =" - "))%>%. $ value' – akrun
@akrun данные должны быть исправлены теперь спасибо – giacomo