在 R 中插入表格的单个丝束

问题描述 投票:0回答:1

我正在尝试在单个点插入一行数据帧。我可以使用

approx
来获取单个值,但最终需要得到一个向量或单行,数据帧的每一列都有一个值。

df <- data.frame(
  x = c(1.1, 1.2, 1.3, 1.4),
  y1 = c(-.6,-.4, .4, 1.2),
  y2 = c(-.7, -.4, .4, .46),
  y3 = c(-.8, -.3, .5, 1.2)
)
df
    x   y1    y2   y3
1 1.1 -0.6 -0.70 -0.8
2 1.2 -0.4 -0.40 -0.3
3 1.3  0.4  0.40  0.5
4 1.4  1.2  0.46  1.2

target_x <- 1.24

## Works
approx(df$x, df$y1, target_x)$y
>[1] -0.08

### looking for something like approx(df$x, df[,2:4], target_x)
## should return:
> [1] -0.08 -0.08  0.02

线性插值很好,我不需要在现有表格之外进行推断。首选基本 R 或 dplyr 方法。

r interpolation
1个回答
0
投票

您可以使用

dplyr
来执行此操作,使用
reframe()
across()
来识别所有以“y”开头的变量。它看起来是这样的。在下面的
across()
语句中,
.x
代表 across 语句中的每个变量 - 在本例中,代表所有以“y”开头的变量。

library(dplyr)
df <- data.frame(
  x = c(1.1, 1.2, 1.3, 1.4),
  y1 = c(-.6,-.4, .4, 1.2),
  y2 = c(-.7, -.4, .4, .46),
  y3 = c(-.8, -.3, .5, 1.2)
)

target_x <- 1.24

df %>% 
  reframe(across(starts_with("y"), 
                 ~approx(x, .x, target_x)$y))
#>      y1    y2   y3
#> 1 -0.08 -0.08 0.02

创建于 2023-08-16,使用 reprex v2.0.2

© www.soinside.com 2019 - 2024. All rights reserved.