gpt4 book ai didi

r - 使用 tidyverse 对长格式数据框中的两个变量求和

转载 作者:行者123 更新时间:2023-12-02 03:21:58 25 4
gpt4 key购买 nike

我有一个格式整洁的简单数据框:

  group variable               value
<fct> <chr> <dbl>
1 fishers_here 100
1 money_per_fisher 2000
1 unnecessary_variable 10
2 fishers_here 140
2 money_per_fisher 8000
2 unnecessary_variable 304
3 fishers_here 10
3 money_per_fisher 9000
....

对于每个组,我希望有一个变量“组中的总资金”,即fishers_here * money_per_fisher;基本上我希望它看起来像这样:

  group variable               value
<fct> <chr> <dbl>
1 fishers_here 100
1 money_per_fisher 2000
1 unnecessary_variable 10
1 TOTAL_MONEY 200000

....

是否有一种简单的方法可以使用 tidyverse 完成此任务?简单地说,我的意思是不必过滤、汇总、添加变量列,然后加入两个现在独立的数据帧。

最佳答案

您可以展开,进行乘法,然后聚集备份。请注意,正如我所评论的,我假设第 6 行中的组编号存在拼写错误,它应该是组 2,而不是组 1。如果情况并非如此,则需要一些额外的清洁步骤。您还可以根据需要对结果行进行排序(例如,将每个组的行重新放在一起)

library(tidyverse)
tbl <- read_table2(
"group variable value
1 fishers_here 100
1 money_per_fisher 2000
1 unnecessary_variable 10
2 fishers_here 140
2 money_per_fisher 8000
2 unnecessary_variable 304
3 fishers_here 10
3 money_per_fisher 9000"
)
tbl %>%
spread(variable, value) %>%
mutate(total_money_in_group = money_per_fisher * fishers_here) %>%
gather(variable, value, -group)
#> # A tibble: 12 x 3
#> group variable value
#> <dbl> <chr> <dbl>
#> 1 1 fishers_here 100
#> 2 2 fishers_here 140
#> 3 3 fishers_here 10
#> 4 1 money_per_fisher 2000
#> 5 2 money_per_fisher 8000
#> 6 3 money_per_fisher 9000
#> 7 1 unnecessary_variable 10
#> 8 2 unnecessary_variable 304
#> 9 3 unnecessary_variable NA
#> 10 1 total_money_in_group 200000
#> 11 2 total_money_in_group 1120000
#> 12 3 total_money_in_group 90000

reprex package 于 2019-02-04 创建(v0.2.1)

关于r - 使用 tidyverse 对长格式数据框中的两个变量求和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54521550/

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