R 延长枢轴_,以保持两个立柱,并使其余立柱变长
如何使一个长表保持两个字符列(a和B)不变,并将其余的转换为长格式R 延长枢轴_,以保持两个立柱,并使其余立柱变长,r,tidyverse,tidyr,R,Tidyverse,Tidyr,如何使一个长表保持两个字符列(a和B)不变,并将其余的转换为长格式 df <- data.frame(A=c("A", "B", "C"), B= c("AA", "BB", "CC"),`1`=c("1.9", "6.8", "4.7"), `2`=c("1.9", "6.8&qu
df <- data.frame(A=c("A", "B", "C"), B= c("AA", "BB", "CC"),`1`=c("1.9", "6.8", "4.7"), `2`=c("1.9", "6.8", "4.7"), `34`=c("3.9", "0.3", "2.7"), `39`=c("2.9", "2.3", "2.9"), `158`=c("2.9", "3", "45"),`190`=c("22.1", "7.4", "56"), check.names=FALSE)
library(dplyr)
library(tidyr)
df2<- df %>% pivot_longer(cols = c(A,B), names_to = 'Number', values_to = 'Value') %>% type.convert(as.is = T) %>%
mutate(Variable = case_when(Number %in% c(1,2) ~ 'WW', Number %in% c(34,39) ~ 'MM', TRUE ~ 'EE')) %>%
select('Letter' = A, B, Number, Variable, Value)
如果希望长格式的数据
A
,B
保持原样,请将其从cols
中删除:
library(dplyr)
library(tidyr)
df %>%
pivot_longer(cols = -c(A,B), names_to = 'Number', values_to = 'Value') %>%
type.convert(as.is = T) %>%
mutate(Variable = case_when(Number %in% c(1,2) ~ 'WW',
Number %in% c(34,39) ~ 'MM', TRUE ~ 'EE')) %>%
select(One = A, two = B, Number, Variable, Value)
# A tibble: 18 x 5
# One two Number Variable Value
# <chr> <chr> <int> <chr> <dbl>
# 1 A AA 1 WW 1.9
# 2 A AA 2 WW 1.9
# 3 A AA 34 MM 3.9
# 4 A AA 39 MM 2.9
# 5 A AA 158 EE 2.9
# 6 A AA 190 EE 22.1
# 7 B BB 1 WW 6.8
# 8 B BB 2 WW 6.8
# 9 B BB 34 MM 0.3
#10 B BB 39 MM 2.3
#11 B BB 158 EE 3
#12 B BB 190 EE 7.4
#13 C CC 1 WW 4.7
#14 C CC 2 WW 4.7
#15 C CC 34 MM 2.7
#16 C CC 39 MM 2.9
#17 C CC 158 EE 45
#18 C CC 190 EE 56
库(dplyr)
图书馆(tidyr)
df%>%
pivot_更长(cols=-c(A,B),name_to='Number',values_to='Value')%>%
type.convert(as.is=T)%>%
在%c(1,2)中的(数字%)~'WW'时,mutate(Variable=case_),
%c(34,39)~'MM',TRUE~'EE'))中的数字百分比%>%
选择(一=A,二=B,数字,变量,值)
#一个tibble:18x5
#一个两个数字的变量值
#
#1 A AA 1 WW 1.9
#2 A AA 2 WW 1.9
#3 A AA 34毫米3.9毫米
#4 A AA 39毫米2.9毫米
#5 A AA 158 EE 2.9
#6 A AA 190 EE 22.1
#7 B BB 1 WW 6.8
#8 B BB 2 WW 6.8
#9 B BB 34毫米0.3
#10 B BB 39毫米2.3
#11 B BB 158 EE 3
#12 B BB 190 EE 7.4
#13 C CC 1 WW 4.7
#14 C CC 2 WW 4.7
#15立方厘米34毫米2.7毫米
#16立方厘米39毫米2.9毫米
#17 C CC 158 EE 45
#18 C CC 190 EE 56
library(dplyr)
library(tidyr)
df %>%
pivot_longer(cols = -c(A,B), names_to = 'Number', values_to = 'Value') %>%
type.convert(as.is = T) %>%
mutate(Variable = case_when(Number %in% c(1,2) ~ 'WW',
Number %in% c(34,39) ~ 'MM', TRUE ~ 'EE')) %>%
select(One = A, two = B, Number, Variable, Value)
# A tibble: 18 x 5
# One two Number Variable Value
# <chr> <chr> <int> <chr> <dbl>
# 1 A AA 1 WW 1.9
# 2 A AA 2 WW 1.9
# 3 A AA 34 MM 3.9
# 4 A AA 39 MM 2.9
# 5 A AA 158 EE 2.9
# 6 A AA 190 EE 22.1
# 7 B BB 1 WW 6.8
# 8 B BB 2 WW 6.8
# 9 B BB 34 MM 0.3
#10 B BB 39 MM 2.3
#11 B BB 158 EE 3
#12 B BB 190 EE 7.4
#13 C CC 1 WW 4.7
#14 C CC 2 WW 4.7
#15 C CC 34 MM 2.7
#16 C CC 39 MM 2.9
#17 C CC 158 EE 45
#18 C CC 190 EE 56