You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在R中基于VAR3=101构建以VAR4为值的VAR1-VAR2矩阵

生成指定条件的2×2矩阵

给定数据框df,结合预期输出来看,实际需求是提取**VAR3为101(对应VAR2=10)和104(对应VAR2=20)**的行,构造行对应VAR1取值、列对应VAR2取值、单元格为VAR4数值的2×2矩阵。以下是具体实现方法:

步骤1:筛选目标数据

先从原数据框中挑出符合条件的行:

df_sub <- df[df$VAR3 %in% c(101, 104), ]

步骤2:构造目标矩阵

方法1:Base R 原生实现

用tapply()函数直接按VAR1和VAR2分组提取VAR4值,生成矩阵:

result_mat <- tapply(df_sub$VAR4, list(df_sub$VAR1, df_sub$VAR2), FUN = identity)

方法2:tidyr 包宽格式转换(更直观)

先将长格式数据转为宽格式,再转为矩阵:

library(tidyr)
# 转换为宽格式数据框
wide_df <- spread(df_sub, key = VAR2, value = VAR4)
# 提取数值部分转为矩阵并设置行名
result_mat <- as.matrix(wide_df[, -1])
rownames(result_mat) <- wide_df$VAR1

运行后得到的矩阵与预期一致:

10  20
1  58 200
2 108  72

内容的提问来源于stack exchange,提问作者vp_050

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 10:55:34