如何使用Pivot_longer将宽型数据reshape为多变量长型数据
How to use Pivot_longer to reshape from wide-type data to long-type data with multiple variables
我想问一下如何将下面的数据框从宽型改成长型。
宽型数据如下
整形前的宽型数据:
long型数据,即我想得到的dataframe,如下
整形后的长型数据:
如果您能给我一些使用 pivot-longer 来完成此操作的提示,我将不胜感激。我可以通过 BLS 和 ELS 分别重塑数据:
df_long_BLS <- df %>%
pivot_longer(
cols = starts_with("BLS_tchrG"),
names_to = "grade",
names_prefix = "BLS_tchrG",
values_to = "BLS_tchrG"
)
df_long_ELS <- df %>%
pivot_longer(
cols = starts_with("ELS_tchrG"),
names_to = "grade",
names_prefix = "ELS_tchrG",
values_to = "ELS_tchrG"
)
但是这样我需要合并这两个单独的文件。我想知道如何在不制作 2 个单独文件的情况下重塑此数据。
你可以试试:
tidyr::pivot_longer(df, cols = -ID_IE,
names_to = c('.value', 'grade'),
names_pattern = '(.*)(\d+)')
# A tibble: 8 x 4
# ID_IE grade BLS_tchrG ELS_tchrG
# <dbl> <chr> <dbl> <dbl>
#1 2135 2 1 1
#2 2135 7 1 1
#3 2101 2 0 0
#4 2101 7 2 0
#5 2103 2 0 0
#6 2103 7 3 0
#7 2111 2 1 1
#8 2111 7 4 1
数据
尝试过此数据:
df <- data.frame(ID_IE = c(2135, 2101, 2103, 2111), BLS_tchrG2 = c(1, 0, 0, 1),
BLS_tchrG7 = 1:4,
ELS_tchrG2 = c(1, 0, 0, 1), ELS_tchrG7 = c(1, 0, 0, 1))
我想问一下如何将下面的数据框从宽型改成长型。 宽型数据如下
整形前的宽型数据:
long型数据,即我想得到的dataframe,如下
整形后的长型数据:
如果您能给我一些使用 pivot-longer 来完成此操作的提示,我将不胜感激。我可以通过 BLS 和 ELS 分别重塑数据:
df_long_BLS <- df %>%
pivot_longer(
cols = starts_with("BLS_tchrG"),
names_to = "grade",
names_prefix = "BLS_tchrG",
values_to = "BLS_tchrG"
)
df_long_ELS <- df %>%
pivot_longer(
cols = starts_with("ELS_tchrG"),
names_to = "grade",
names_prefix = "ELS_tchrG",
values_to = "ELS_tchrG"
)
但是这样我需要合并这两个单独的文件。我想知道如何在不制作 2 个单独文件的情况下重塑此数据。
你可以试试:
tidyr::pivot_longer(df, cols = -ID_IE,
names_to = c('.value', 'grade'),
names_pattern = '(.*)(\d+)')
# A tibble: 8 x 4
# ID_IE grade BLS_tchrG ELS_tchrG
# <dbl> <chr> <dbl> <dbl>
#1 2135 2 1 1
#2 2135 7 1 1
#3 2101 2 0 0
#4 2101 7 2 0
#5 2103 2 0 0
#6 2103 7 3 0
#7 2111 2 1 1
#8 2111 7 4 1
数据
尝试过此数据:
df <- data.frame(ID_IE = c(2135, 2101, 2103, 2111), BLS_tchrG2 = c(1, 0, 0, 1),
BLS_tchrG7 = 1:4,
ELS_tchrG2 = c(1, 0, 0, 1), ELS_tchrG7 = c(1, 0, 0, 1))