小编Eri*_*ric的帖子

按组前缀旋转更长的时间

我需要按列字符串前缀分组更长的时间。下面的玩具示例有两个组“A”和“B”,但我需要一个针对任意数量的前缀组的通用 tidyverse 解决方案。

#toy df
set.seed(1)
df <- data.table(
  date = rep(seq(as.Date("2020-01-01"),as.Date("2020-01-05"),by="day"),each=6),
  k = rep(c("A.mean","A.median","A.min","B.mean","B.median","B.min"),5),
  v = runif(30,0,50)
  ) %>%
  pivot_wider(names_from = k, values_from = v)

df %>% head

  date       A.mean A.median  A.min B.mean B.median B.min
  <date>      <dbl>    <dbl>  <dbl>  <dbl>    <dbl> <dbl>
1 2020-01-01   13.3     18.6 28.6    45.4      10.1 44.9 
2 2020-01-02   47.2     33.0 31.5     3.09     10.3  8.83
3 2020-01-03   34.4     19.2 38.5    24.9      35.9 49.6 
4 2020-01-04   19.0     38.9 46.7    10.6      32.6  6.28
5 2020-01-05   13.4     19.3  0.670 …
Run Code Online (Sandbox Code Playgroud)

r dplyr tidyr

6
推荐指数
1
解决办法
1582
查看次数

如何为ggplot强制geom_smooth渲染?

我想为这个多组图强制渲染一条更平滑的线,即使在一个组只有一个或两个值的情况下也是如此。见下文:

library(ggplot2)

set.seed(1234)
df <- data.frame(group = factor(c(rep("A",3),rep("B",2),"C")), x = c(1,2,3,1,2,2), value = runif(6))
ggplot(df,aes(x=x,y=value,group=group,color=group))+
  geom_point(size=2)+
  geom_line(stat="smooth",method = "loess",size = 2, alpha = 0.3)
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

这是我想看到的输出:

在此处输入图片说明

r ggplot2

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

从矢量元素中连续减去

我需要从矢量中减去一个数字,使其从元素中被连续地减去.例如,考虑向量a = c(8, 4).如果我想从这个向量中连续减去9,我首先从第一个向量元素中减去9,即第一个元素为0,提示为1,然后从第二个元素中减去.对于第二个向量元素,留下4-1 = 3.

我可以用一堆不雅的if-else语句来做到这一点.肯定有更好的办法.显示示例会更容易:

我假设串行减法函数叫做serialSub.

a = c(8,4)
serialSub(a,4)
> [1] 4 4

serialSub(a,8)
> [1] 0 4

serialSub(a,9)
> [1] 0 3

serialSub(a,13)
> [1] 0 0

serialSub(a,0)
> [1] 8 4
Run Code Online (Sandbox Code Playgroud)

r

3
推荐指数
1
解决办法
46
查看次数

data.table shift()似乎没有正确"领先"

我是data.table的初学者.任何人都可以向我解释为什么我不能得到预期的结果shift()?(我得到的结果是"领先"或"滞后")

set.seed(123)
x <- data.table(a = sample(1:10,10,replace = F))
x <- x[order(a)][, a1 := shift(a,1,"lead")]
x
     a a1
 1:  1 NA
 2:  2  1
 3:  3  2
 4:  4  3
 5:  5  4
 6:  6  5
 7:  7  6
 8:  8  7
 9:  9  8
10: 10  9
Run Code Online (Sandbox Code Playgroud)

这是我期待的结果:

data.table(a = 1:10, a1 = c(2:10,NA))
     a a1
 1:  1  2
 2:  2  3
 3:  3  4
 4:  4  5
 5:  5  6
 6:  6  7
 7:  7  8 …
Run Code Online (Sandbox Code Playgroud)

r data.table

-2
推荐指数
1
解决办法
400
查看次数

标签 统计

r ×4

data.table ×1

dplyr ×1

ggplot2 ×1

tidyr ×1