我正在尝试操纵此数据框:
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获得此结果?
这被标记为重复项,但是所提供的链接都没有解决我的问题,因为我不是从宽到长或从长到宽。
答案 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)