R:以宽格式向数据添加信息并将其转换为长格式的最佳实践
R: Best practice to add information to data in wide format and transform it to long format
我正在尝试将一些时间过程数据从宽格式转换为长格式,这也需要在原始数据的基础上添加更多信息。
原始数据遵循以下结构:
ID Exp_01 Exp_02 Exp_03 Exp_04 Exp_05 ...
"AA" 0.01 0.02 0.03 0.05 0.01
"BB" 0.01 0.02 0.03 0.05 0.01
"CC" 0.01 0.02 0.03 0.05 0.01
"DD" 0.01 0.02 0.03 0.05 0.01
"EE" 0.01 0.02 0.03 0.05 0.01
...
“Exp_XY”标签是一个时间序列,有7个时间点,每个时间点在三种不同的实验条件下测量3次,所以一直持续到“Exp_63”。
为了说明,Exp_01, Exp_02, Exp_03
属于条件cond1
的时间点t1
。 Exp_04, Exp_05, Exp_06
属于时间点t2
,条件cond1
,以此类推。
我用 pivot_longer
和这个命令成功地将数据转换成长格式:
raw %>% pivot_longer(!ID, names_to="experimentID", values_to="count")
我想在原始数据上加上时间点和实验条件的信息,转化成长格式,用于下游分析。但是,我卡在了这一点上,希望有人能帮助解决以下问题:
将有关时间点和实验条件的信息添加到原始数据的最佳做法是什么。转长格式前加还是后加比较好?
根据1)的答案,实际添加的信息是怎样的?
所需的输出如下所示:
ID experimentID time condition count
"AA" "Exp_01" "t1" "cond1" 0.01
"AA" "Exp_02" "t1" "cond1" 0.02
"AA" "Exp_03" "t1" "cond1" 0.03
"AA" "Exp_04" "t2" "cond1" 0.05
"AA" "Exp_05" "t2" "cond1" 0.01
"AA" "Exp_06" "t2" "cond1" 0.03
...
"AA" "Exp_61" "t7" "cond3" 0.05
"AA" "Exp_62" "t7" "cond3" 0.05
"AA" "Exp_63" "t7" "cond3" 0.05
"BB" "Exp_01" "t1" "cond1" 0.01
"BB" "Exp_02" "t1" "cond1" 0.02
...
如有任何帮助,我将不胜感激!
您可以使用 rep
和 paste0
创建 time
和 condition
列。
library(dplyr)
library(tidyr)
result <- raw %>%
pivot_longer(!ID, names_to="experimentID", values_to="count") %>%
group_by(ID) %>%
mutate(time = rep(paste0('time', 1:7), each = 3, 3),
condition = rep(paste0('cond', 1:3), each = 21))
result
我正在尝试将一些时间过程数据从宽格式转换为长格式,这也需要在原始数据的基础上添加更多信息。 原始数据遵循以下结构:
ID Exp_01 Exp_02 Exp_03 Exp_04 Exp_05 ...
"AA" 0.01 0.02 0.03 0.05 0.01
"BB" 0.01 0.02 0.03 0.05 0.01
"CC" 0.01 0.02 0.03 0.05 0.01
"DD" 0.01 0.02 0.03 0.05 0.01
"EE" 0.01 0.02 0.03 0.05 0.01
...
“Exp_XY”标签是一个时间序列,有7个时间点,每个时间点在三种不同的实验条件下测量3次,所以一直持续到“Exp_63”。
为了说明,Exp_01, Exp_02, Exp_03
属于条件cond1
的时间点t1
。 Exp_04, Exp_05, Exp_06
属于时间点t2
,条件cond1
,以此类推。
我用 pivot_longer
和这个命令成功地将数据转换成长格式:
raw %>% pivot_longer(!ID, names_to="experimentID", values_to="count")
我想在原始数据上加上时间点和实验条件的信息,转化成长格式,用于下游分析。但是,我卡在了这一点上,希望有人能帮助解决以下问题:
将有关时间点和实验条件的信息添加到原始数据的最佳做法是什么。转长格式前加还是后加比较好?
根据1)的答案,实际添加的信息是怎样的?
所需的输出如下所示:
ID experimentID time condition count
"AA" "Exp_01" "t1" "cond1" 0.01
"AA" "Exp_02" "t1" "cond1" 0.02
"AA" "Exp_03" "t1" "cond1" 0.03
"AA" "Exp_04" "t2" "cond1" 0.05
"AA" "Exp_05" "t2" "cond1" 0.01
"AA" "Exp_06" "t2" "cond1" 0.03
...
"AA" "Exp_61" "t7" "cond3" 0.05
"AA" "Exp_62" "t7" "cond3" 0.05
"AA" "Exp_63" "t7" "cond3" 0.05
"BB" "Exp_01" "t1" "cond1" 0.01
"BB" "Exp_02" "t1" "cond1" 0.02
...
如有任何帮助,我将不胜感激!
您可以使用 rep
和 paste0
创建 time
和 condition
列。
library(dplyr)
library(tidyr)
result <- raw %>%
pivot_longer(!ID, names_to="experimentID", values_to="count") %>%
group_by(ID) %>%
mutate(time = rep(paste0('time', 1:7), each = 3, 3),
condition = rep(paste0('cond', 1:3), each = 21))
result