[英]Reshape data.frame with two columns into multiple columns with data (R)
[英]R + reshape : variance of columns of a data.frame
我在R中使用重整形来计算data.frame列上的汇总统计信息。 这是我的data.frame:
> df
a a b b ID
1 1 1 1 1 1
2 2 3 2 3 2
3 3 5 3 5 3
这只是一个测试data.frame的尝试,以尝试了解重塑包。 我融化然后进行投射,以尝试找到a
s和b
s的均值:
> melt(df, id = "ID") -> df.m
> cast(df.m, ID ~ variable, fun = mean)
ID a b
1 1 1 1
2 2 2 2
3 3 3 3
哎呀! 什么? 希望c(2,3)
的平均值为2.5,依此类推。 这是怎么回事? 这是一件事:
> df.m
ID variable value
1 1 a 1
2 2 a 2
3 3 a 3
4 1 a 1
5 2 a 2
6 3 a 3
7 1 b 1
8 2 b 2
9 3 b 3
10 1 b 1
11 2 b 2
12 3 b 3
这是怎么回事? 我的5
孩子都去了哪里? 我在这里有一个非常基本的误解吗? 如果是这样:那是什么?
这不是有效的数据框,因为列没有唯一的名称。
我在这里更新了答案以解决此问题: R:聚合data.frame的列
显然,如果您的数据框没有唯一的列名,它们将无法正常融合。
编辑:而不是具有aaabb
列名,显然您需要具有唯一的列名以melt()
正常工作。 至少a.1 a.2 a.3 b.1 b.2
。 使用后melt()
您的选择得到合理的水平variable
或者是使用gsub()
上的水平variable
,以消除歧义值,或使用colsplit()
创建两个新列。 对于我刚刚给出的虚拟名称,它看起来像:
levels(df.m$variable) <- gsub("\\..*", "", levels(df.m$variable))
#or
df.m <- cbind(df.m, colsplit(df.m$variable, split = "\\.", names = c("Measure","N")))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.