gpt4 book ai didi

r - 在 R 中使用具有不均匀长度变量的熔化/类型转换

转载 作者:行者123 更新时间:2023-12-02 05:08:05 25 4
gpt4 key购买 nike

我正在处理一个想要旋转的大型数据框,以便列中的变量成为顶部的行。

我发现 reshape 包在这种情况下非常有用,除了强制转换函数默认为 fun.aggregate=length 之外。大概这是因为我按“案例”执行这些操作,并且测量的变量数量因案例而异。

我想进行透视,以便缺失的变量在透视数据框中表示为“NA”。

所以,换句话说,我想从这样的熔融数据框架开始:

Case | Variable | Value
1 1 2.3
1 2 2.1
1 3 1.3
2 1 4.3
2 2 2.5
3 1 1.8
3 2 1.9
3 3 2.3
3 4 2.2

对于这样的事情:

Case | Variable 1 | Variable 2 | Variable 3 | Variable 4
1 2.3 2.1 1.3 NA
2 4.3 2.5 NA NA
3 1.8 1.9 2.3 2.2

代码 dcast(data,...~Variable) 再次默认为 fun.aggregate=length,它不保留原始值。

感谢您的帮助,如果有任何不清楚的地方请告诉我!

最佳答案

只需将所有变量包含在 cast 调用中即可。 Reshape 期望 Value 列被称为 value,因此它会抛出警告,但仍然可以正常工作。使用 fun.aggregate=length 的原因是公式中缺少 Case。它正在聚合 Case 中的值。

尝试:cast(data, Case~Variable)

data <- data.frame(Case=c(1,1,1,2,2,3,3,3,3),
Variable=c(1,2,3,1,2,1,2,3,4),
Value=c(2.3,2.1,1.3,4.3,2.5,1.8,1.9,2.3,2.2))

cast(data,Case~Variable)
Using Value as value column. Use the value argument to cast to override this choice
Case 1 2 3 4
1 1 2.3 2.1 1.3 NA
2 2 4.3 2.5 NA NA
3 3 1.8 1.9 2.3 2.2

编辑:作为对@Jon 评论的回应。如果数据框中多了一个变量,该怎么办?

data <- data.frame(expt=c(1,1,1,1,2,2,2,2,2),
func=c(1,1,1,2,2,3,3,3,3),
variable=c(1,2,3,1,2,1,2,3,4),
value=c(2.3,2.1,1.3,4.3,2.5,1.8,1.9,2.3,2.2))

cast(data,expt+variable~func)
expt variable 1 2 3
1 1 1 2.3 4.3 NA
2 1 2 2.1 NA NA
3 1 3 1.3 NA NA
4 2 1 NA NA 1.8
5 2 2 NA 2.5 1.9
6 2 3 NA NA 2.3
7 2 4 NA NA 2.2

关于r - 在 R 中使用具有不均匀长度变量的熔化/类型转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6391470/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com