2016-10-27 22 views
0

創建表我失敗在此約10的方法:- [R 3列

我有3列格式化的數據:

H7 200,3 2227649,5 
H13 200,3 1084585 
H15 200,3 873123,1 
Zdrowy 200,3 2245707 
Z26 202,7 1742185,9 
Zdrowy 202,7 2420348,5 
K4 203,5 10251587 
Z18 203,5 6904013 
H7 203,5 5765803 
H13A 203,5 4219047,5 
H13 203,5 1791847,1 
H15 203,5 1260959,3 
K3 203,5 9878843 
K5 203,5 3406241 
K35 203,5 4746493 
K37 203,5 6303874 
Z11 203,5 1415927,8 
Z16 203,5 6245137,5 
Z26 203,5 7330417,5 

列1和2不包含不是唯一的值。我需要做的是獲得一個矩陣,其中column1作爲行名,column2作爲列名,column3作爲單元格中的對應值。如果值重複(因爲1,2列有一些非唯一值),單元格值應該是平均值。

任何幫助嗎?

+0

如果第2列是列名,第3列是值但第1列變成行名,這是否意味着除第1行之外的其餘行將是空白/ NAs? – vagabond

+0

我沒有聽到您的評論。 NAs將是所有column2值中給定column1沒有任何column3的那些單元格。 將數據傳入: 庫(tidyr) ee < - spread(df,V2,V3,fill = 0) 這就是我想要的結果,只是不知道如何處理重複行 – redaktroll

回答

1

這聽起來像是你試圖將數據從長格式轉換爲寬格式。你可以用包reshape2來做到這一點。這裏是一個小例子:如果存在一些因素的組合的任何值在列1和2,這將插入的NaN

# Create dummy data 
df <- data.frame(col1=sample(c('a','b','c'), 10, replace=T), col2=sample(1:3, 10, replace=T), col3=rnorm(10)) 
df 
    col1 col2  col3 
1  b 2 0.1514541 
2  c 3 -0.2566596 
3  a 3 -0.8939474 
4  a 1 -0.2174930 
5  a 1 -0.1739861 
6  b 1 -0.4525370 
7  b 2 -0.5592760 
8  b 3 0.5206133 
9  a 2 -1.9239337 
10 c 2 -0.1581582 

# Load the library 
library(reshape2) 

# Cast the library into wide format 
df.long <- dcast(df, col1~col2, fun.aggregate=mean) 
df.long 
col1   1   2 
1 a -0.1957395 -1.9239337 
2 b -0.4525370 -0.2039110 
3 c  NaN -0.1581582 
      3 
1 -0.8939474 
2 0.5206133 
3 -0.2566596 

+0

正是我所需要的,非常感謝! – redaktroll