在R中重组数据框

时间:2018-12-03 21:02:01

标签: r

我正在尝试操纵此数据框:

df
   name     date     X  Y
Person1   Monday     1  5
Person2   Monday     2  6
Person1  Tuesday     3  7
Person2  Tuesday     4  8

看起来像这样:

   name   variable  Monday  Tuesday
Person1          X       1        3
Person1          Y       5        7
Person2          X       2        4
Person2          Y       6        8

是否有一种方法可以操纵我的原始数据框以使用R获得此结果?

这被标记为重复项,但是所提供的链接都没有解决我的问题,因为我不是从宽到长或从长到宽。

2 个答案:

答案 0 :(得分:2)

这里是data.table

的一种方式
library(data.table)
dt <- fread(text)
dcast(melt(dt, id.vars = c('name', 'date')), name + variable ~ date)
#      name variable Monday Tuesday
#1: Person1        X      1       3
#2: Person1        Y      5       7
#3: Person2        X      2       4
#4: Person2        Y      6       8

数据

text <- "name    | date    | X | Y
Person1 | Monday  | 1 | 5
Person2 | Monday  | 2 | 6
Person1 | Tuesday | 3 | 7
Person2 | Tuesday | 4 | 8"

text <- gsub("\\|", "", text)

答案 1 :(得分:1)

尝试一下,然后查看R For Data Science了解更多详细信息

library(tidyverse)

df %>% 
  gather(X, Y, key = variable, value = temp) %>% 
  spread(key = date, value = temp)