2014-11-02 75 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