r - 将整洁的数据框转换为迷你图的形式(dataui)
问题描述
我有一些整洁的数据,需要将其转换为适用于使用dataui
包构建小图(迷你图)的格式。您可以在下面的代码示例中看到所需的数据帧格式,df_sparkline
.
我拥有的整洁数据有大约 30 家公司和一年的数据,<10,000 行。将 df_tidy 转换为 df_sparklines 的最佳方法是什么(最清楚的理解比原始速度更有价值)?
library("dataui")
library("reactable")
library("tidyverse")
df_tidy <- tibble(
company = c("A", "B", "A", "B", "A", "B"),
line_data = c(1, 2, 2, 2, 1, 1),
date = c(as.Date("2021-01-01"), as.Date("2021-01-01"), as.Date("2021-01-02"), as.Date("2021-01-02"), as.Date("2021-01-03"), as.Date("2021-01-03"))
)
df_sparkline <- structure(list(company = c("A", "B"), line_data = list(list(c(1, 2, 1)), list(c(2, 2, 1)))), row.names = c(NA, -2L), class = c("tbl_df", "tbl", "data.frame"))
rt1 <- reactable(
df_sparkline,
columns = list(
line_data = colDef(
cell = function(value, index) {
dui_sparkline(
data = value[[1]],
height = 80,
components = dui_sparklineseries(curve = "linear") # https://github.com/williaster/data-ui/tree/master/packages/sparkline#series
)
}
)
)
)
rt1
解决方案
您只需要group_by()
和summarise()
:
df_sparkline2 = df_tidy %>%
group_by(company) %>%
summarise(line_data=list(list(line_data)))
waldo::compare(df_sparkline, df_sparkline2)
# √ No differences
这里的关键是调用list()
inside summarise()
。
推荐阅读
- c# - C# .Replace() method does not work correctly with Arabic language
- r - R中ols命令(rms包)的linearHypothesis等价物
- c++ - boost::stacktrace::frame::name() 挂起
- c# - 在 C# 中逐个单元格或一次全部读取 Excel 工作表是否更好?
- android - 在颤动中显示全屏加载小部件
- mongodb - 带有多字段计数的groupby的mongodb
- python - 我需要打印具有不同字段的不同字典,ValueError: dict contains fields not in fieldnames:
- linux - Bash replacing part of output with a string
- matlab - 如何在 Windows 7 上安装 Veins 5a1?并将其与 Matlab 连接
- linux - 如何创建一个正常运行的程序?因为我的程序永远运行并且不会停止