我有 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 也是一样。
无需旋转:
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
(尽管有名字。)