繁体   English   中英

在数据框中添加新列并从 R 中的矩阵中查找值

[英]Adding a new column in dataframe and looking up values from matrix in R

创建了一个名为 GroMatrix 的矩阵。

GroMatrix=matrix(c(1,2,3,4,5,2,3,4,5,6,3,4,5,6,7,4,5,6,7,8),byrow=TRUE,nrow=4)

我想使用此矩阵作为参考,通过从同一行的两个不同列中查找数据来将数据输入到现有数据框的新列中,以将其视为矩阵的行号和列号。 我正在尝试以下方法但徒劳无功。

Df$NewCol=GroMatrix[Df$Col1,Df$Col2]

Col1 和 Col2 是 Dataframe Df 的两个变量,这两列都是数字(整数)。 在运行上述命令时,我的数据框中添加了一些新的观察结果,即 NewCol[,1]、NewCol[,2] 等。 需要帮忙 。

您只需要通过矩阵对矩阵进行子集化。

因此,要通过矩阵子集矩阵,您必须将数据集转换为矩阵。 为此使用as.matrix 此外,通过矩阵对矩阵进行子集化为我们提供了一个向量。 如需更多阅读,请参阅Hadley Wickham 的 Advanced R

假设您在数据框中的参考 cols 被命名为rowcol 只需按照以下步骤

Gromatrix <- matrix(c(1,2,3,4,5,2,3,4,5,6,3,4,5,6,7,4,5,6,7,8),byrow=TRUE,nrow=4)
set.seed(1)
df_samp <- data.frame(
  row = sample(1:4, 10, replace = TRUE),
  col = sample(1:5, 10, replace = TRUE)
)
df_samp$new_col <- Gromatrix[as.matrix(df_samp[, c('row', 'col')])]
df_samp
#>    row col new_col
#> 1    1   3       3
#> 2    4   3       6
#> 3    3   1       3
#> 4    1   5       5
#> 5    2   5       6
#> 6    1   2       2
#> 7    3   2       4
#> 8    3   1       3
#> 9    2   5       6
#> 10   2   5       6

reprex 包于 2022-07-07 创建 (v2.0.1)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM