2017-07-13 301 views
0

嘗試將數據集(sdevDFC)重新組織爲矩陣,並將緯度(緯度)作爲行名稱和經度(Lon)作爲列名稱,然後在矩陣中填入相應的值座標。r矩陣列填充不正確

stand_dev_m <- matrix(data=sdevDFC$SDev, nrow=length(sdevDFC$Lat), ncol=length(sdevDFC$Lon), byrow=TRUE, dimnames = list(sdevDFC$Lat, sdevDFC$Lon)) 

列和行的名字出現,因爲他們應該,但我的數據填充,這樣在各自的列中的所有值都相同如圖所示 image(這不應該是這種情況因爲沒有我的價值觀不斷重複)。

我已經用byrow = FALSE來填充它,看看它是否也發生了(它確實),並且我還使用colnames和rownames而不是dimnames(不做任何更改)。

希望任何洞察我可能做錯了 - 也有新的這個平臺,所以我很抱歉,如果我錯過了一個準則或其他問題,這是類似

+3

這是因爲你的數據幀有'n'行('length(sdevDFC $ Lat)'等等),所以你只給它'n'個數據值(來自同一個數據幀),因此重複填充'nxn'網格。 –

+0

Hi @STK如果我的答案幫助解決了您的問題,請考慮通過點擊左邊的複選標記來接受答案。這讓社區知道它的工作。 – CPak

回答

0

示例數據:

df <- data.frame(LON=1:5, 
       LAT=11:15, 
       VAL=letters[1:5], 
       stringsAsFactors=F) 

你可以嘗試以下方法:

rn <- df$LON   # Save what-will-be-rownames 
df1 <- df %>% 
     spread(LAT,VAL,fill=NA) %>% 
     select(-LON) %>% 
     setNames(., df$LAT) 
rownames(df1) <- rn 

輸出

11 12 13 14 15 
1 a <NA> <NA> <NA> <NA> 
2 <NA> b <NA> <NA> <NA> 
3 <NA> <NA> c <NA> <NA> 
4 <NA> <NA> <NA> d <NA> 
5 <NA> <NA> <NA> <NA> e