【发布时间】:2020-03-09 11:55:22
【问题描述】:
这是我的玩具数据。
df <- tibble::tribble(
~date1, ~A Equity, ~date2, ~B Equity, ~date3, ~C Equity,
"1/29/2016", 35, "10/31/2017", 67, NA_character_, NA_real_,
"2/29/2016", 40, "11/30/2017", 31, NA_character_, NA_real_,
NA_character_,NA_real_, "12/29/2017", 56, NA_character_, NA_real_)
真正的有 1000 多列和更多的日期。
我想将数据加长,以便所需的输出只有 date、var 和 value 列,如下所示:
desired_df <- tibble::tribble(
~date, ~var, ~value,
"1/29/2016", "A", 35,
"2/29/2016", "A", 40,
"10/31/2017", "B", 67,
"11/30/2017", "B", 31,
"12/29/2017", "B", 56)
我试过了,但没有得到想要的结果:
df2 <- df %>%
pivot_longer(cols = contains("date"), names_to = "dates", values_to = "date") %>%
pivot_longer (cols = contains("Equity"), names_to = "var", values_to = "value") %>%
select(-dates) %>%
distinct() %>%
filter(!is.na(date))
【问题讨论】: