【发布时间】:2020-11-29 12:19:35
【问题描述】:
我正在尝试使用 approx() 和 dplyr 在现有数组中插入值。我的初始代码如下所示...
p = c(1,1,1,2,2,2)
q = c(1,2,3,1,2,3)
r = c(1,2,3,4,5,6)
Inputs<- data.frame(p,q,r)
new.inputs= as.numeric(c(1.5,2.5))
library(dplyr)
Interpolated <- Inputs %>%
group_by(p) %>%
arrange(p, q) %>%
mutate(new.output=approx(x=q, y=r, xout=new.inputs)$y)
我希望看到 1.5、2.5、4.5、5.5,但我得到了
错误:大小不兼容 (2),需要 3(组大小)或 1
谁能告诉我哪里出错了?
【问题讨论】:
-
您如何期望
mutate获得的行数少于您的数据框?试试这个Inputs %>% group_by(p) %>% arrange(p, q) %>% mutate(new.output=paste(approx(x=q, y=r, xout=new.inputs)$y, collapse = ','))找出你想要什么 -
如此明显!我真正想要的是生成一个仅包含组 (p)、新输入 (q') 和新输出 (r') 的新数据帧,因此是一个 4 x 3 数组。我想我可以使用 dplyr 为每个组重复插值。现在我想我必须创建一个以 group 和 new.input 作为输入的函数。这听起来像是一个更好的计划吗?