2014-11-02 74 views
0

我有一個關於R編程的問題。R編程:清理數據

如果我有類似下面的數據集:

LA NY MA 
1 2 3 
4 5 6 
3 5 
4 

(換句話說,不是所有的行都是一樣的) 我試圖用lm進行方差分析測試(決定是否意味着每個州的數字相同),並且它不斷顯示「發生錯誤」,因爲行不匹配。我該如何解決這個問題? 此外,當我做lm,我通常做lm(y~x),所以如果我想要做lm(y~LA),那麼沒有y變量鍵入。我應該爲此創建一個新的列/行嗎?

+0

你的數據不明確。這將有助於你發佈前幾行數據。如果它是一個數據框,在這裏發佈head(yourdataframe)的輸出。 – rnso 2014-11-02 02:19:50

+0

編輯數據!對困惑感到抱歉! – Betty 2014-11-02 02:38:55

+0

您可以將數據轉換爲2列格式:狀態和平均值。那麼它將更容易分析。 – rnso 2014-11-02 02:42:41

回答

1

也許你可以做這樣的事情。要讀取數據,請使用read.table中的fill參數。凡​​,你會把你的文件名。

(dat <- read.table(text = txt, header = TRUE, fill = TRUE)) 
# LA NY MA 
# 1 1 2 3 
# 2 4 5 6 
# 3 3 5 NA 
# 4 4 NA NA 

然後我們可以取列的方法並創建一個新的兩列數據框。

cm <- colMeans(dat, na.rm = TRUE) 
data.frame(state = names(cm), mean = unname(cm)) 
# state mean 
# 1 LA 3.0 
# 2 NY 4.0 
# 3 MA 4.5 

其中txt

txt <- "LA NY MA 
1 2 3 
4 5 6 
3 5 
4" 
0

可以使用聚集()從tidyr包到數據塑造成用於分析的目的長格式。它需要多列,並將它們收集到鍵值對中:它使「寬」數據變得更長。

示例代碼:

LA <- c(1,4,3,4) 
NY <- c(4,5,6, NA) 
MA <- c(3,6, NA, NA) 
df <- data.frame(LA, NY, MA) # data in wide format 

library(tidyr) 
df <- df %>% gather(attribute, value) # data in long format