R将宽数据转换为长数据
如何从以下内容转换数据:R将宽数据转换为长数据,r,dataframe,tidyverse,data-conversion,R,Dataframe,Tidyverse,Data Conversion,如何从以下内容转换数据: example <- data.frame(RTD_1_LOC = c('A', 'B'), RTD_2_LOC = c('C', 'D'), RTD_3_LOC = c('E', 'F'), RTD_4_LOC = c('G', 'H'), RTD_5_LOC = c('I', 'J'),RTD_1_OFF = c('1', '2'), RTD_2_OFF = c('3',
example <- data.frame(RTD_1_LOC = c('A', 'B'), RTD_2_LOC = c('C', 'D'),
RTD_3_LOC = c('E', 'F'), RTD_4_LOC = c('G', 'H'),
RTD_5_LOC = c('I', 'J'),RTD_1_OFF = c('1', '2'), RTD_2_OFF = c('3', '4'),
RTD_3_OFF = c('5', '6'), RTD_4_OFF = c('7', '8'),
RTD_5_OFF = c('9', '10'))
example我们可以使用fromtidyr
并指定names\u模式
从列名中捕获组。由于“RTD”列应保持不变,请在名称中指定“RTD”向量和列值(.value
),以便“RTD”将获得数字捕获((\\d+
)和单词((\\w+
)“LOC”,“OFF”将创建为具有列值的新列
library(dplyr)
library(tidyr)
example %>%
pivot_longer(cols = everything(),
names_to = c("RTD", ".value"), names_pattern = "\\w+_(\\d+)_(\\w+)")
-输出
# A tibble: 10 x 3
RTD LOC OFF
<chr> <chr> <chr>
1 1 A 1
2 2 C 3
3 3 E 5
4 4 G 7
5 5 I 9
6 1 B 2
7 2 D 4
8 3 F 6
9 4 H 8
10 5 J 10
#一个tible:10 x 3
RTD锁定关闭
1 A 1
2 2 C 3
3 E 5
4 G 7
5我9
6 1 B 2
7 2 D 4
8 3 F 6
9 4小时8
10 5 J 10
我们可以使用fromtidyr
并指定names\u模式
从列名中捕获组。由于“RTD”列应保持不变,请在names\u to
中指定“RTD”向量和列值(.value
),以便“RTD”将获得数字捕获((\\d+
)单词((\\w+)
)“LOC”、“OFF”将创建为具有列值的新列
library(dplyr)
library(tidyr)
example %>%
pivot_longer(cols = everything(),
names_to = c("RTD", ".value"), names_pattern = "\\w+_(\\d+)_(\\w+)")
-输出
# A tibble: 10 x 3
RTD LOC OFF
<chr> <chr> <chr>
1 1 A 1
2 2 C 3
3 3 E 5
4 4 G 7
5 5 I 9
6 1 B 2
7 2 D 4
8 3 F 6
9 4 H 8
10 5 J 10
#一个tible:10 x 3
RTD锁定关闭
1 A 1
2 2 C 3
3 E 5
4 G 7
5我9
6 1 B 2
7 2 D 4
8 3 F 6
9 4小时8
10 5 J 10