当某些行是彼此的子集时,如何将 Tibble 旋转得更宽?

问题描述 投票:0回答:1

我有 df1 之类的东西,我想获得 df2。我尝试过使用

mutate()
pivot_wider()
但我不知道如何表达这个想法。

library(tidyverse)

 df1 <- tibble(
  v1 = c("name1","name1.1","name1.2","name1.3","name2","name2.1","name2.2"),
  v2 = c(9,2,3,4,13,6,7)
)

 df2 <- tibble(
  v1 = c(rep("name1",3),rep("name2",2)),
  v2 = c("name1.1","name1.2","name1.3","name2.1","name2.2"),
  v3 = c(2,3,4,6,7)
)

请注意,name1 是 name1.i 的值之和,其中 i = 1,2,3。 name2 也是一样。

r pivot
1个回答
0
投票

无需旋转:

df1 %>%
  mutate(parent = sub("\\..*", "", v1)) %>%
  filter(v1 != parent)
# # A tibble: 5 × 3
#   v1         v2 parent
#   <chr>   <dbl> <chr> 
# 1 name1.1     2 name1 
# 2 name1.2     3 name1 
# 3 name1.3     4 name1 
# 4 name2.1     6 name2 
# 5 name2.2     7 name2 

(尽管有名字。)

© www.soinside.com 2019 - 2024. All rights reserved.