r - 多变量 R 的从宽到长的问题
问题描述
我知道这个问题已经在 stackoverflow 中被广泛讨论过,但我还是想不通。我有一个如下所示的数据集,其中包含两个变量 IC 和 T;4 个主体间因素(A、B、C、D)和两个主体内因素(1,2)。我想将此数据集转换为具有一个 ID 列的长格式,一列用于规范它是哪个主题因子,一列用于内部变量,两列用于每个值变量 IC 和 T。
df <- read.table(header=TRUE, text="
ID IC_A_1 IC_A_2 IC_B_1 IC_B_2 IC_C_1 IC_C_2 IC_D_1 IC_D_2 T_A_1 T_A_2 T_B_1 T_B_2 T_C_1 T_C_2 T_D_1 T_D_2
1 1 2 NA NA NA NA NA NA 2 5 NA NA NA NA NA NA
2 3 4 NA NA NA NA NA NA 5 5 NA NA NA NA NA NA
3 NA NA 3 4 NA NA NA NA NA NA 5 7 NA NA NA NA
4 NA NA 2 1 NA NA NA NA NA NA 5 5 NA NA NA NA
5 NA NA NA NA 3 3 NA NA NA NA NA NA 3 4 NA NA
6 NA NA NA NA 2 3 NA NA NA NA NA NA 3 4 NA NA
7 NA NA NA NA NA NA 4 5 NA NA NA NA NA NA 6 7
8 NA NA NA NA NA NA 4 7 NA NA NA NA NA NA 4 2
")
非常感谢大家!
解决方案
这能给你想要的输出吗?
out <- reshape(
setNames(df, sub("_", ".", names(df))),
direction = "long",
idvar = "ID",
varying = -1
)
这样
ID time IC T
1.A_1 1 A_1 1 2
2.A_1 2 A_1 3 5
3.A_1 3 A_1 NA NA
4.A_1 4 A_1 NA NA
5.A_1 5 A_1 NA NA
6.A_1 6 A_1 NA NA
7.A_1 7 A_1 NA NA
8.A_1 8 A_1 NA NA
1.A_2 1 A_2 2 5
2.A_2 2 A_2 4 5
3.A_2 3 A_2 NA NA
4.A_2 4 A_2 NA NA
5.A_2 5 A_2 NA NA
6.A_2 6 A_2 NA NA
7.A_2 7 A_2 NA NA
8.A_2 8 A_2 NA NA
1.B_1 1 B_1 NA NA
2.B_1 2 B_1 NA NA
3.B_1 3 B_1 3 5
4.B_1 4 B_1 2 5
5.B_1 5 B_1 NA NA
6.B_1 6 B_1 NA NA
7.B_1 7 B_1 NA NA
8.B_1 8 B_1 NA NA
1.B_2 1 B_2 NA NA
2.B_2 2 B_2 NA NA
3.B_2 3 B_2 4 7
4.B_2 4 B_2 1 5
5.B_2 5 B_2 NA NA
6.B_2 6 B_2 NA NA
7.B_2 7 B_2 NA NA
8.B_2 8 B_2 NA NA
1.C_1 1 C_1 NA NA
2.C_1 2 C_1 NA NA
3.C_1 3 C_1 NA NA
4.C_1 4 C_1 NA NA
5.C_1 5 C_1 3 3
6.C_1 6 C_1 2 3
7.C_1 7 C_1 NA NA
8.C_1 8 C_1 NA NA
1.C_2 1 C_2 NA NA
2.C_2 2 C_2 NA NA
3.C_2 3 C_2 NA NA
4.C_2 4 C_2 NA NA
5.C_2 5 C_2 3 4
6.C_2 6 C_2 3 4
7.C_2 7 C_2 NA NA
8.C_2 8 C_2 NA NA
1.D_1 1 D_1 NA NA
2.D_1 2 D_1 NA NA
3.D_1 3 D_1 NA NA
4.D_1 4 D_1 NA NA
5.D_1 5 D_1 NA NA
6.D_1 6 D_1 NA NA
7.D_1 7 D_1 4 6
8.D_1 8 D_1 4 4
1.D_2 1 D_2 NA NA
2.D_2 2 D_2 NA NA
3.D_2 3 D_2 NA NA
4.D_2 4 D_2 NA NA
5.D_2 5 D_2 NA NA
6.D_2 6 D_2 NA NA
7.D_2 7 D_2 5 7
8.D_2 8 D_2 7 2
如果要删除带有NA
s的行,可以尝试
> na.omit(out)
ID time IC T
1.A_1 1 A_1 1 2
2.A_1 2 A_1 3 5
1.A_2 1 A_2 2 5
2.A_2 2 A_2 4 5
3.B_1 3 B_1 3 5
4.B_1 4 B_1 2 5
3.B_2 3 B_2 4 7
4.B_2 4 B_2 1 5
5.C_1 5 C_1 3 3
6.C_1 6 C_1 2 3
5.C_2 5 C_2 3 4
6.C_2 6 C_2 3 4
7.D_1 7 D_1 4 6
8.D_1 8 D_1 4 4
7.D_2 7 D_2 5 7
8.D_2 8 D_2 7 2
推荐阅读
- android - Android Management API 的有效身份验证凭据
- ios - SSLError:[Errno 1] _ssl.c:510:错误:1409442E:SSL 例程:SSL3_READ_BYTES:tlsv1 警报协议版本
- python - AttributeError:“切片”对象没有属性“标志”错误
- angular - angular2-multiselect-dropdown 在下拉列表中显示 id 和 itemName
- sql-server - 始终加密:在证书存储中找不到带有指纹的证书
- php - Doctrine - 事件监听器(preUpdate)不更新相关实体
- sql-server - SQL Server 函数运行速度很慢
- python - 在哪些情况下可以在 python 中使用缩进?
- deep-learning - 交叉验证中的数据增强
- kubernetes - Prometheus 查询以获取 kubernetes pod 中的 CPU 和内存使用情况