用于ANOVA的R Datafram操纵

时间:2019-03-08 23:24:50

标签: r dataframe

我有一个包含300个变量的数据框,每个变量有四个观测值。例如,变量之一如下所示。

Afghanistan
34
34
56
45

我正在执行方差分析,因此我需要数据看起来像这样:

Afghanistan 34
Afghanistan 34
Afghanistan 56
Afghanistan 45

如何对所有300个变量执行此操作?我的理由是,我可以使用aov函数来运行方差分析。在这种情况下,该国家被认为是一种治疗方法,每种治疗方法都有4个观察值。任何指导将不胜感激!

1 个答案:

答案 0 :(得分:0)

正如divibisan的评论所暗示的那样,该问题与Stack Overflow上的其他问题非常相似。您的问题在数据处理项目中相当普遍,您要完成的工作被称为“将数据从宽格式转换为长格式”。

有许多R软件包带有内置函数来完成此任务,例如reshape()或reshape2软件包的熔铸/浇铸。但是,如果您不习惯将这些功能用作“黑匣子”解决方案,则可以使用这种方法手动构建所需的数据集。

  ex<-data.frame(USA=1:4, FRANCE=5:8)
  ex

    USA FRANCE
    1      5
    2      6
    3      7
    4      8


  country<-names(ex)
  country_names<-c()
  vals<-c()

  for (i in 1:ncol(ex)){

   country_names<-c(country_names,(rep(country[i],4)))

   vals<-c(vals,ex[,i])

  }

  transformed<-data.frame(country=country_names, value = vals)

  transformed

  country value
      USA     1
      USA     2
      USA     3
      USA     4
   FRANCE     5
   FRANCE     6
   FRANCE     7
   FRANCE     8