从水平数据框到垂直数据框重塑、连接和创建新列
reshape, concatenate and create new column from horizontal to verical dataframe
我有一个很大的数据集,这里显示了其中的一些
data<-read.table(text="SR_ID GCS_pre_desc EDA_pre_desc GCS_post_desc EDA_post_desc HR_pre SBP_pre DBP_pre HR_post SBP_post DBP_post
1.00 5.800 5.240 1.400 5.500 88 127 57 83 143 83
2.00 3.300 5.580 5.300 6.020 57 153 63 69 108 51
3.00 1.300 5.700 3.700 7.100 77 121 64 81 98 44
4.00 10.400 3.370 9.000 3.030 54 121 39 69 145 65", sep="", header=T)
我想将我的数据重塑为
- 将相同的列标题放在彼此下面,例如下面的 HR_post
HR_pre
- 创建新列 Pre vs. post
- 连接列标题,例如 HR_pre vs.post(如下面的屏幕截图所示)。
任何建议将不胜感激。
我们可以使用 pivot_longer
来自 tidyr
library(dplyr)
library(tidyr)
data %>%
pivot_longer(cols = -SR_ID, names_to = c(".value", "prevspost"),
names_pattern = "(.*)_(pre|post.*)")
我有一个很大的数据集,这里显示了其中的一些
data<-read.table(text="SR_ID GCS_pre_desc EDA_pre_desc GCS_post_desc EDA_post_desc HR_pre SBP_pre DBP_pre HR_post SBP_post DBP_post
1.00 5.800 5.240 1.400 5.500 88 127 57 83 143 83
2.00 3.300 5.580 5.300 6.020 57 153 63 69 108 51
3.00 1.300 5.700 3.700 7.100 77 121 64 81 98 44
4.00 10.400 3.370 9.000 3.030 54 121 39 69 145 65", sep="", header=T)
我想将我的数据重塑为
- 将相同的列标题放在彼此下面,例如下面的 HR_post HR_pre
- 创建新列 Pre vs. post
- 连接列标题,例如 HR_pre vs.post(如下面的屏幕截图所示)。
任何建议将不胜感激。
我们可以使用 pivot_longer
来自 tidyr
library(dplyr)
library(tidyr)
data %>%
pivot_longer(cols = -SR_ID, names_to = c(".value", "prevspost"),
names_pattern = "(.*)_(pre|post.*)")