晚上好,
我现在有一个类似于此的数据框:
ID Day1Var1 Day1Var2 Day2Var1 Day2Var2
1 1 2 3 4
2 5 6 7 8
Run Code Online (Sandbox Code Playgroud)
我想把它带到一个看起来像这样的长格式:
ID Day Var1 Var2
1 1 1 2
1 2 3 4
2 1 5 6
2 2 7 8
Run Code Online (Sandbox Code Playgroud)
有没有一种简单的方法来使用变量的前缀项("Day1","Day2")来创建一个名为"Day"的新变量并自动填充值1和2?这将非常有用,因为我有三个级别的前缀(观察,日,周).
非常感谢!
您可以使用以下代码:
首先,我们以长格式收集数据,将列密钥拆分为day,var得到拆分.我从第1天开始删除日期并将数据传播到正确的表单中.不确定单独和子串是否不能在一步中完成.
library(tidyr)
library(dplyr)
df1 %>%
gather(key, value, -ID) %>%
separate(key, into = c("Day", "Var"), sep = 4) %>%
mutate(Day = substring(Day, 4, 4)) %>%
spread(Var, value)
ID Day Var1 Var2
1 1 1 1 2
2 1 2 3 4
3 2 1 5 6
4 2 2 7 8
Run Code Online (Sandbox Code Playgroud)
数据:
df1 <- structure(list(ID = 1:2, Day1Var1 = c(1L, 5L), Day1Var2 = c(2L,
6L), Day2Var1 = c(3L, 7L), Day2Var2 = c(4L, 8L)), class = "data.frame", row.names = c(NA,
-2L))
Run Code Online (Sandbox Code Playgroud)