gpt4 book ai didi

r - 带有成对列的 pivot_longer 中缺少前缀

转载 作者:行者123 更新时间:2023-12-03 16:35:08 27 4
gpt4 key购买 nike

我有一个带有一系列成对列的“宽”data.frame。我的目标是使用pivot_longer 取消旋转它。
对于所有列中带有前缀的成对列有很多帮助。但在我的情况下,只有一半的对有前缀,我不知道如何定义“names_pattern”,如果这可能的话。

在以下示例中,所有配对列都有一个前缀,我可以将其与 pivot_longer 的 names_pattern 属性拆分:

df_wide <- tribble(
~id , ~f_start , ~d_start , ~f_end , ~d_end ,
'A' , 'p' , '2018-01-01' , 'p' , '2018-02-01' ,
'B' , 'i' , '2019-04-01' , 'p' , '2020-01-01' ,
'C' , 'i' , '2018-06-01' , 'i' , '2019-03-01' ,
'D' , 'p' , '2019-12-01' , 'p' , '2020-05-01' ,
'E' , 'p' , '2019-02-01' , 'p' , '2019-05-01' ,
'F' , 'i' , '2018-04-01' , 'i' , '2018-07-01' ,
)

df_wide %>%
pivot_longer(-id ,
names_to = c('.value' , 'status') ,
names_pattern = '(.*)_(.*)'
)

这导致我的预期输出:
   id    status f     d         
<chr> <chr> <chr> <chr>
1 A start p 2018-01-01
2 A end p 2018-02-01
3 B start i 2019-04-01
4 B end p 2020-01-01
5 C start i 2018-06-01
6 C end i 2019-03-01
7 D start p 2019-12-01
8 D end p 2020-05-01
9 E start p 2019-02-01
10 E end p 2019-05-01
11 F start i 2018-04-01
12 F end i 2018-07-01

不幸的是,我的 data.frame 看起来像这样,其中一半对缺少前缀。
df_wide<- tribble(
~id , ~f_start , ~start , ~f_end , ~end ,
'A' , 'p' , '2018-01-01' , 'p' , '2018-02-01' ,
'B' , 'i' , '2019-04-01' , 'p' , '2020-01-01' ,
'C' , 'i' , '2018-06-01' , 'i' , '2019-03-01' ,
'D' , 'p' , '2019-12-01' , 'p' , '2020-05-01' ,
'E' , 'p' , '2019-02-01' , 'p' , '2019-05-01' ,
'F' , 'i' , '2018-04-01' , 'i' , '2018-07-01' ,
)

有谁知道如何实现预期的输出?

提前致谢

最佳答案

如果可以的话rename缺少前缀 rename_at ,OP的解决方案会起作用

library(dplyr)
library(tidyr)
library(stringr)
df_wide %>%
rename_at(vars(matches('^(start|end)')), ~ str_c('d_', .)) %>%
pivot_longer(-id ,
names_to = c('.value' , 'status') ,
names_pattern = '(.*)_(.*)'
)
# A tibble: 12 x 4
# id status f d
# <chr> <chr> <chr> <chr>
# 1 A start p 2018-01-01
# 2 A end p 2018-02-01
# 3 B start i 2019-04-01
# 4 B end p 2020-01-01
# 5 C start i 2018-06-01
# 6 C end i 2019-03-01
# 7 D start p 2019-12-01
# 8 D end p 2020-05-01
# 9 E start p 2019-02-01
#10 E end p 2019-05-01
#11 F start i 2018-04-01
#12 F end i 2018-07-01

关于r - 带有成对列的 pivot_longer 中缺少前缀,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62108454/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com