gpt4 book ai didi

r - 将 pivot_longer 与现有的 names_to 列一起使用

转载 作者:行者123 更新时间:2023-12-05 01:33:53 26 4
gpt4 key购买 nike

以这样的数据框为例(真实的数据框有更多的列):

df <- data.frame(A = seq(1, 3, 1),
B = seq(4, 6, 1))

我可以使用 pivot_longer 来收集我感兴趣的列(AB),如下所示:

library(dplyr)
library(tidyr)
df <- df %>%
pivot_longer(cols = c("A", "B"), names_to = "Letter", values_to = "Number")
df
Letter Number
<chr> <dbl>
1 A 1
2 B 4
3 A 2
4 B 5
5 A 3
6 B 6

现在假设我的数据框中有另一列C,使其不再整洁

C <- seq(7, 12, 1)

df_2 <- data.frame(df, C)
df_2
Letter Number C
1 A 1 7
2 B 4 8
3 A 2 9
4 B 5 10
5 A 3 11
6 B 6 12

我想再次使用 pivot_longer 使 df_2 整洁并获得此输出:

data.frame(Letter = c(rep("A", 3), rep("B", 3), rep("C", 3)),
Number = seq(1, 12, 1))
Letter Number
1 A 1
2 A 2
3 A 3
4 B 4
5 B 5
6 B 6
7 C 7
8 C 8
9 C 9
10 C 10
11 C 11
12 C 12

虽然使用相同的策略会产生错误:

df_2 %>% 
pivot_longer(cols = "C", names_to = "Letter", values_to = "Number")
Error: Failed to create output due to bad names.
* Choose another strategy with `names_repair`

names_repair 设置为 minimal 运行但不会产生我想要的输出。

最佳答案

像这样关注

library(tidyverse)
df <- data.frame(A = seq(1, 3, 1),
B = seq(4, 6, 1))
df <- df %>%
pivot_longer(cols = c("A", "B"), names_to = "Letter", values_to = "Number")

C <- seq(7, 12, 1)
df_2 <- data.frame(C)
df_2 <- df_2 %>% pivot_longer(cols = C, names_to = "Letter", values_to = "Number")

df_result <- rbind(df, df_2)

输出

> df_result
# A tibble: 12 x 2
Letter Number
<chr> <dbl>
1 A 1
2 B 4
3 A 2
4 B 5
5 A 3
6 B 6
7 C 7
8 C 8
9 C 9
10 C 10
11 C 11
12 C 12

关于r - 将 pivot_longer 与现有的 names_to 列一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64248409/

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