相关疑难解决方法(0)

将data.table链分成两行代码以便于阅读

我正在研究一个Rmarkdown文档,并被告知要严格限制最大列数(边距列)为100.在文档的代码块中,我使用了许多不同的包,其中包括data.table.

为了符合限制,我可以拆分链(甚至长命令),如:

p <- ggplot(foo,aes(bar,foo2))+
       geom_line()+
       stat_smooth()
bar <- sum(long_variable_name_here,
         na.rm=TRUE)
foo <- bar %>% 
         group_by(var) %>%
         summarize(var2=sum(foo2))
Run Code Online (Sandbox Code Playgroud)

但我不能拆分data.table链,因为它会产生错误.我怎样才能实现这样的目标?

bar <- foo[,.(long_name_here=sum(foo2)),by=var]
           [order(-long_name_here)]
Run Code Online (Sandbox Code Playgroud)

当然,最后一行会导致错误.谢谢!

code-formatting r data.table

5
推荐指数
3
解决办法
2332
查看次数

管道的data.table替代品

我目前正在学习非常强大和高效的data.table框架(包).然而,我似乎无法弄清楚如何做这样的事情.我要做的是按多列(制造商和运营商)分组,根据此分组获取航班数量,然后按降序排列,然后排列前十大制造商和运营商的ggplot.我会在tidyverse中执行以下操作:

library(nycflights13)
library(tidyverse)
flights %>% 
  left_join(planes, by = "tailnum") %>% 
  group_by(manufacturer, carrier) %>% 
  summarise(N = n()) %>% 
  arrange(desc(N)) %>% 
  top_n(10, N) %>% 
  ggplot(aes(carrier, N, fill = manufacturer)) + geom_col() + guides(fill = FALSE)
Run Code Online (Sandbox Code Playgroud)

这是我尝试过的:(我离开问题几分钟尝试解决但失败了)

library(data.table)
fly<-copy(nycflights13::flights)
setDT(fly)
setkey(fly,tailnum)
planes1 <- copy(planes)
setDT(planes1)
setkey(planes1, tailnum)
#head(planes1,2)
Merged <- merge(fly, planes1, by = "tailnum")
#Group by manufacturer
Merged[, .N, by = .(manufacturer,carrier)] #[, order(manufacturer, carrier)]
Run Code Online (Sandbox Code Playgroud)

问题是我无法返回有序数据,也不知道如何"链接"到ggplot而不先将有序合并保存为对象.

r ggplot2 data.table

4
推荐指数
1
解决办法
258
查看次数

标签 统计

data.table ×2

r ×2

code-formatting ×1

ggplot2 ×1