首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在dplyr中对组使用约x()

在dplyr中对组使用约x()
EN

Stack Overflow用户
提问于 2016-09-27 14:20:57
回答 1查看 824关注 0票数 1

我试图使用approx()dplyr在现有数组中插值值。我的初始代码是这样的..。

代码语言:javascript
运行
复制
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

有人能告诉我哪里出了问题吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-11-29 04:19:35

您可以使用dplyr获得您期望的值。

代码语言:javascript
运行
复制
library(dplyr)
Inputs %>%
  group_by(p) %>%
  arrange(p, q, .by_group = TRUE) %>%
  summarise(new.outputs = approx(x = q, y = r, xout = new.inputs)$y)

#     p  new.outputs
#  <dbl>       <dbl>
#     1         1.5
#     1         2.5
#     2         4.5
#     2         5.5

您还可以使用ddply函数从plyr获得所期望的值。

代码语言:javascript
运行
复制
library(plyr)

# Output as coordinates
ddply(Inputs, .(p), summarise, new.output = paste(approx(
  x = q, y = r, xout = new.inputs
)$y, collapse = ","))

# p new.output
# 1    1.5,2.5
# 2    4.5,5.5

#######################################

# Output as flattened per group p
ddply(Inputs,
      .(p),
      summarise,
      new.output = approx(x = q, y = r, xout = new.inputs)$y)

# p new.output
# 1        1.5
# 1        2.5
# 2        4.5
# 2        5.5
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39727206

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档