根据与向量的比较并在 R [关闭] 中获取最接近的数字来创建列

Posted

技术标签:

【中文标题】根据与向量的比较并在 R [关闭] 中获取最接近的数字来创建列【英文标题】:Create a column based on comparing with a vector and the get the closest number in R [closed] 【发布时间】:2020-11-27 09:59:58 【问题描述】:

我在 R Dataframe 中有下表:

我想比较 col2 和一个向量

并基于最接近向量中元素的值,我想创建 Col3,如下所示:

如何在 R 编程中做到这一点?

【问题讨论】:

请不要将您的数据添加为图像。使用dput 共享数据,阅读有关how to ask a good question 的信息以及如何提供reproducible example。 【参考方案1】:

您可以按如下方式完成此操作:

# create a minimal example data.frame and 
# vector of values to match
df <- data.frame(x = seq(0.1, 1, 0.1))

set.seed(1)
v  <- df$x + rnorm(10, mean = 0, sd = 0.1)

# create a vector z that stores values from v that 
# are closest to values in the ith element of df$x
z <- c()
for(i in 1:nrow(df))
  z[i] = v[which.min(abs(df$x[i] - v))]


# assign the new object z to the data.frame
df$z <- z
df

返回:

x          z
1  0.1 0.03735462
2  0.2 0.21643714
3  0.3 0.21836433
4  0.4 0.51795316
5  0.5 0.51795316
6  0.6 0.55952808
7  0.7 0.74874291
8  0.8 0.74874291
9  0.9 0.87383247
10 1.0 0.96946116

【讨论】:

非常感谢 Rich。那行得通。这太棒了。

以上是关于根据与向量的比较并在 R [关闭] 中获取最接近的数字来创建列的主要内容,如果未能解决你的问题,请参考以下文章

根据名称向量获取列索引(在R中)

如何比较文本文件中的 gps 坐标以查看哪对最接近用户的当前位置 [关闭]

根据最接近的时间戳加入 R 中的两个数据帧

BigQuery 根据最接近的时间戳和匹配值组合表

在多维数组中找到两个相关数字的最接近组合

R - 根据第二个数据框中最接近的匹配分配列值