我的数据看起来像这样,
posture code HR EE a b
cycling A03 102 100 3 6
standingA03 99 99 4 6
sitting A03 98 67 5 5
walking A03 97 78 3 6
cycling B01 111 76 5 5
standingB01 100 88 4 4
sitting B01 78 34 4 3
walking B01 99 99 2 2
Run Code Online (Sandbox Code Playgroud)
我需要转置它,使它看起来如下所示:
code cycling_HR cycling_EE cycling_a cycling_b standing_HR standing_EE standing_a standing_b sitting_HR sitting_EE sitting_a sitting_b walking_HR walking_EE walking_a walking_b
A03 102 100 3 6 99 99 4 6 98 67 5 5 97 78 3 6
B01 111 76 5 5 100 88 4 4 78 34 4 3 99 99 2 2
Run Code Online (Sandbox Code Playgroud)
等等(抱歉格式化).我无法找到适当的答案来澄清问题.任何援助都会受到欢迎.
这是一个非常基本的"长到宽"的重塑问题.
您可以使用以下reshape功能在基本R中执行此操作:
reshape(mydf, direction = "wide", idvar = "code", timevar = "posture")
# code HR.cycling EE.cycling a.cycling b.cycling HR.standing EE.standing
# 1 A03 102 100 3 6 99 99
# 5 B01 111 76 5 5 100 88
# a.standing b.standing HR.sitting EE.sitting a.sitting b.sitting HR.walking
# 1 4 6 98 67 5 5 97
# 5 4 4 78 34 4 3 99
# EE.walking a.walking b.walking
# 1 78 3 6
# 5 99 2 2
Run Code Online (Sandbox Code Playgroud)
您还可以查看"dplyr"+"tidyr"方法,可能是这样的:
library(dplyr)
library(tidyr)
mydf %>%
gather(var, val, HR:b) %>%
unite(v1, posture, var) %>%
spread(v1, val)
Run Code Online (Sandbox Code Playgroud)