格式化数据以在R

时间:2018-08-14 15:39:04

标签: r dataframe statistics comma anova

我正在尝试在R中运行三向ANOVA,但每个变量的值都在一列中,而不是用行隔开。目前,我的数据框如下所示:

Season  Site    Location    Replicate   Lengths
Jan_16  MI      Adj        1.00      ,
Jan_16  MI      Adj        2.00      ,
Jan_16  MI      Adj        3.00      ,
Jan_16  MI     Away        1.00      3,4,
Jan_16  MI     Away        2.00      ,
Jan_16  MI     Away        3.00      ,
Jan_16  MP     Adj         1.00      4,5,6,5,4,5,4,4,4,4,5,4,6,4,
Jan_16  MP     Adj         2.00      4,4,3,3,5,4,3,4,5,3,4,3,4,3,4,6,
Jan_16  MP     Adj         3.00      4,6,5,5,4,
Jan_16  MP     Away        1.00      ,4,4,10,4,5,4,6,5,5,
Jan_16  MP     Away        2.00       3,4,4,4,5,5,4,5,
Jan_16  MP     Away        3.00       4,4,13,4,

Lengths是我希望对其运行ANOVA的响应变量,我该怎么做?只是一个“,”表示没有数据。

****编辑

我尝试了单独的行

library(tidyr)

separate_rows(data.frame, Season:Replicate, Lengths, convert=numeric )


#Error: All nested columns must have the same number of elements

长度有不同数量的变量,那么有什么方法可以取消嵌套吗?

2 个答案:

答案 0 :(得分:0)

取消嵌套数据是解决该问题的最佳方法。

运行代码:

library(dplyr)

#Unnest everything so that no longer "," but each has a row


data.frame.new<-data.frame   
  transform(Lengths=strsplit(Lengths,",")) %>%
  unnest(Lengths)

#Gets rid of blanks where there are no data

Set.unnest<-subset(data.frame.new, Lengths!="")   

对于“长度”中的每个数据点,这给出了“季节”,“站点”,“位置”和“重复项”重复行的结果

答案 1 :(得分:0)

不清楚您的问题是什么独立变量。在下面的示例中,假设SiteLocationReplicate是您的IV。

让我们首先将Lengths中的条目拆分为不同的行,并删除缺少/没有Lengths的行。

library(tidyverse)
df.aov <- df %>%
    mutate(Lengths = str_split(Lengths, ",")) %>%
    unnest() %>%
    filter(Lengths >= 0)

我们现在可以对aov进行三向方差分析

res <- aov(Lengths ~ Site * Location * Replicate, data = df.aov)
res
#Call:
#   aov(formula = Lengths ~ Site * Location * Replicate, data = df.aov)
#
#Terms:
#                     Site  Location Replicate Location:Replicate Residuals
#Sum of Squares    2.21675   7.61905   0.11491            0.89526 131.58506
#Deg. of Freedom         1         1         1                  1        53
#
#Residual standard error: 1.57567
#3 out of 8 effects not estimable
#Estimated effects may be unbalanced

请注意,结果不是很明智。我认为您的实际数据集更大。