gpt4 book ai didi

r - 如何基于两列扩展数据框?

转载 作者:行者123 更新时间:2023-12-05 01:25:59 24 4
gpt4 key购买 nike

我不确定如何解决以下问题。我有一个看起来像这样的数据框:

df <- structure(list(category = c(1, 2, 3, 4, 5), f1 = c(2, 3, 2, 3, 1), 
f2 = c(1, 2, 4 ,1, 2)), row.names = c(NA, -5L),
class = c("tbl_df", "tbl", "data.frame"))

变量中的数字(名为“category”的变量除外)表示属于这些类别之一的主题,f1 和 f2 是拆分为这两个变量的变量。我想“融化”它们,例如 f1 变量中的那些 2 将成为名为“f”的变量中的 2 行,它们将具有数字 1,同时保持它们旁边的类别,在这种情况下为 1。 F2,类别 1 有 1 个观察值,将再次成为变量“f”和类别 1 中的 1 行,但这次它的编号为 2。

因此,f1 将始终生成在“f”列中具有 1 的行,而 f2 将生成在“f”列中始终具有“2”的行。

下面是我要实现的目标的可视化示例:

      category    f 
1 1 1
2 1 1
3 1 2
4 2 1
5 2 1
6 2 1
7 2 2
8 2 2
9 3 1
10 3 1
11 3 2
12 3 2
13 3 2
14 3 2

提前谢谢你。

最佳答案

对于 tidyr::uncount 来说这是一个完美的任务:

library(tidyr)
df %>%
pivot_longer(cols= c("f1", "f2"), names_to = "f", names_transform = list(f = seq)) %>%
uncount(value)

输出:

df
category f
1 1 1
2 1 1
3 1 2
4 2 1
5 2 1
6 2 1
7 2 2
8 2 2
9 3 1
10 3 1
11 3 2
12 3 2
13 3 2
14 3 2
15 4 1
16 4 1
17 4 1
18 4 2
19 5 1
20 5 2
21 5 2

关于r - 如何基于两列扩展数据框?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70567854/

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