如何在多种条件下将数据从长格式重塑为宽格式?

时间:2017-03-19 14:32:54

标签: r csv dataframe data.table dcast

我有一个名为" vsample2.csv"的数据表。看起来像这样:

vsample2

我需要在我要创建的新数据表中看起来像这样:

answer

尝试使用dcast但似乎无法正常工作。我不想要一个功能。只需一两行。

我需要用数据重复测量anova。 E& H是可变等级1和C& IC是变量级别2.我需要变量级别1,2的显着性值,然后是它们的相互作用。

数据

set.seed(1)
dd <- data.frame(
  subject = paste('Subject', rep(1:4, each = 4)),
  lang = rep(c('H', 'E'), each = 2),
  resp = c('C', 'IC'),
  p = runif(16),
  stringsAsFactors = FALSE
)

1 个答案:

答案 0 :(得分:2)

如果您只是想重塑数据,请尝试以下方法:

library(data.table)
set.seed(1)
dd <- data.frame(
  subject = paste('Subject', rep(1:4, each = 4)),
  lang = rep(c('H', 'E'), each = 2),
  resp = c('C', 'IC'),
  p = runif(16),
  stringsAsFactors = FALSE
)
setDT(dd)
out <- dcast(dd, formula = subject~lang+resp)

产生:

> out
     subject       E_C      E_IC       H_C       H_IC
1: Subject 1 0.5728534 0.9082078 0.2655087 0.37212390
2: Subject 2 0.9446753 0.6607978 0.2016819 0.89838968
3: Subject 3 0.2059746 0.1765568 0.6291140 0.06178627
4: Subject 4 0.7698414 0.4976992 0.6870228 0.38410372