簡體   English   中英

R +重塑:data.frame列的方差

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM