[英]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 被命名为row
和col
。 只需按照以下步骤
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.