答:pivot_wider()。如何将它扩展到两列
R: pivot_wider() . how to extend it to two columns
我找不到以前的答案来帮助我解决以下问题。
我有一个如下所示的数据框:
example_df <- tibble::tribble(
~ COMPANY, ~ ATTRIBUTE_NAME_1 , ~ ATTRIBUTE_VALUE_1, ~ATTRIBUTE_NAME_2, ~ATTRIBUTE_VALUE_2,
'ACME', 'P/E' , '200', 'BV' , '200M',
'Stark Ind', 'P/E' , '300', 'MKT CAP', '3000M')
我想将它分成两列,一列名为“ATTRIBUTE_NAME”,另一列名为“ATTRIBUTE_VALUE”。我该怎么做? -- 更长的常规枢轴不起作用。感谢任何帮助。
result_df <- tibble::tribble(
~ COMPANY, ~ ATTRIBUTE_NAME, ~ATTRIBUTE_VALUE,
'ACME', 'P/E', '200',
'ACME', 'BV', '200M',
'Stark Ind', 'P/E', '300',
'Stark Ind', 'MKT CAP', '3000M')
它需要 2 个独立的步骤。您可以尝试以下方法:
library(tidyverse)
a <- example_df %>% select(COMPANY, contains("NAME")) %>%
pivot_longer(contains("NAME"), names_to = "IND", values_to = "ATTRIBUTE_NAME") %>% select(-IND)
b <- example_df %>% select(COMPANY, contains("VALUE")) %>%
pivot_longer(contains("VALUE"), names_to = "IND", values_to = "ATTRIBUTE_VALUE") %>% select(-IND)
bind_cols(a, b %>% select(-COMPANY))
旋转小插图是一个有用的指南:https://tidyr.tidyverse.org/articles/pivot.html
library(tidyr)
pivot_longer(example_df, -COMPANY,
names_to = c(".value", NA),
names_pattern = "(.*)_(1|2)$")
# A tibble: 4 x 3
COMPANY ATTRIBUTE_NAME ATTRIBUTE_VALUE
<chr> <chr> <chr>
1 ACME P/E 200
2 ACME BV 200M
3 Stark Ind P/E 300
4 Stark Ind MKT CAP 3000M
我找不到以前的答案来帮助我解决以下问题。
我有一个如下所示的数据框:
example_df <- tibble::tribble(
~ COMPANY, ~ ATTRIBUTE_NAME_1 , ~ ATTRIBUTE_VALUE_1, ~ATTRIBUTE_NAME_2, ~ATTRIBUTE_VALUE_2,
'ACME', 'P/E' , '200', 'BV' , '200M',
'Stark Ind', 'P/E' , '300', 'MKT CAP', '3000M')
我想将它分成两列,一列名为“ATTRIBUTE_NAME”,另一列名为“ATTRIBUTE_VALUE”。我该怎么做? -- 更长的常规枢轴不起作用。感谢任何帮助。
result_df <- tibble::tribble(
~ COMPANY, ~ ATTRIBUTE_NAME, ~ATTRIBUTE_VALUE,
'ACME', 'P/E', '200',
'ACME', 'BV', '200M',
'Stark Ind', 'P/E', '300',
'Stark Ind', 'MKT CAP', '3000M')
它需要 2 个独立的步骤。您可以尝试以下方法:
library(tidyverse)
a <- example_df %>% select(COMPANY, contains("NAME")) %>%
pivot_longer(contains("NAME"), names_to = "IND", values_to = "ATTRIBUTE_NAME") %>% select(-IND)
b <- example_df %>% select(COMPANY, contains("VALUE")) %>%
pivot_longer(contains("VALUE"), names_to = "IND", values_to = "ATTRIBUTE_VALUE") %>% select(-IND)
bind_cols(a, b %>% select(-COMPANY))
旋转小插图是一个有用的指南:https://tidyr.tidyverse.org/articles/pivot.html
library(tidyr)
pivot_longer(example_df, -COMPANY,
names_to = c(".value", NA),
names_pattern = "(.*)_(1|2)$")
# A tibble: 4 x 3
COMPANY ATTRIBUTE_NAME ATTRIBUTE_VALUE
<chr> <chr> <chr>
1 ACME P/E 200
2 ACME BV 200M
3 Stark Ind P/E 300
4 Stark Ind MKT CAP 3000M