我有一个包含犯罪数据和相关“价格”的数据框,按国家和年份组织(尽管我认为这在这里并不重要)。这是我的数据的一个子集:
> crime
# A tibble: 8 x 8
iso year theft robbery burglary theft_price robbery_price burglary_price
<chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
1 ALB 2003 3694 199 874 32.9 115 49.3
2 ALB 2004 3694 199 874 38.2 134 57.3
3 ALB 2005 3694 199 874 42.8 150 64.2
4 ALB 2006 3450 164 779 47.0 165 70.5
5 AUS 2003 722334 14634 586266 408.4 1427 612.4
6 AUS 2004 636717 14634 512551 481.3 1683 721.2
7 …Run Code Online (Sandbox Code Playgroud) 我有一个这样的数据框:
> head(df1)
iso year var1 var2 var3
1 XXX 2005 165 29 2151
2 XXX 2006 160 21 2139
3 XXX 2007 NA NA NA
4 XXX 2008 184 9 3640
5 XXX 2009 NA NA NA
6 YYY 2005 206 461 8049
Run Code Online (Sandbox Code Playgroud)
我想通过向后和向前进行最外面的非 NA 观察来替换NA基于周围年份的间歇年份NA以及范围开始和结束的年份。
我为一列执行此操作的代码是:
df1 %>%
group_by(iso) %>%
mutate(var1 = na.approx(var1, na.rm = FALSE, rule = 1)) %>%
mutate(var1 = na.locf(var1, na.rm = FALSE)) %>%
mutate(var1 = na.locf(var1, na.rm = FALSE, fromLast …Run Code Online (Sandbox Code Playgroud) 我想制作一张美国各县的动画分区统计图,其中包含一段时间内确诊的 COVID-19 病例数(是的,又一个冠状病毒图)。这是三天数据选择的链接(欢迎建议更永久的托管位置)。以下是创建静态地图的代码(注释过滤器以包含所有日期):
library(tidyverse)
library(gganimate)
library(ggmap)
library(maps)
library(scales)
p <- part_data %>%
filter(date == as.Date("2020-03-30")) %>%
ggplot(aes(x = long, y = lat, group = group)) +
geom_polygon(aes(fill = confirmed_new), color = "grey70", size = 0.05) +
geom_path(data = state_map, colour = "black") +
coord_map() +
scale_fill_distiller(trans = "log10", direction = 1, palette = "YlOrRd", na.value = "white", limits = c(1, 1E4), labels = comma)
Run Code Online (Sandbox Code Playgroud)
但是我现在如何制作一个随日期移动的动画呢?我试过
p +
transition_time(date)
Run Code Online (Sandbox Code Playgroud)
和
p +
transition_states(date)
Run Code Online (Sandbox Code Playgroud)
但在这两种情况下,R 似乎在渲染进度条出现之前就冻结了,过了一会儿我收到了错误Error: cannot allocate …
Julia 的新手,所以这可能很容易。
我有一个 n×m 数组和一个长度为 n 的向量,并且想要在向量的相应元素中重复数组的每一行的次数。例如:
mat = rand(3,6)
v = vec([2 3 1])
Run Code Online (Sandbox Code Playgroud)
结果应该是一个 6×6 数组。我试过这个repeat功能但是
repeat(mat, inner = v)
Run Code Online (Sandbox Code Playgroud)
6×18×1 Array{Float64,3}:而是产生一个数组,因此它需要v是重复元素的维度。在 matlab 中我会使用repelem(mat, v, 1),我希望 julia 提供类似的东西。我的实际矩阵要大得多,我将不得不多次调用该函数,因此此操作需要尽可能快。