无法向分组数据框添加行

2024-04-19

这是这个问题的后续问题如何将行添加到数据框中仅修改某些列 https://stackoverflow.com/questions/71095723/how-to-add-a-row-to-a-dataframe-modifying-only-some-columns.

解决这个问题后,我想将 stefan 提供的解决方案应用到更大的数据框group_by:

我的数据框:

df <- structure(list(test_id = c(1, 1, 1, 1, 1, 1, 1, 1), test_nr = c(1, 
1, 1, 1, 2, 2, 2, 2), region = c("A", "B", "C", "D", "A", "B", 
"C", "D"), test_value = c(3, 1, 1, 2, 4, 2, 4, 1)), class = "data.frame", row.names = c(NA, 
-8L))

  test_id test_nr region test_value
1       1       1      A          3
2       1       1      B          1
3       1       1      C          1
4       1       1      D          2
5       1       2      A          4
6       1       2      B          2
7       1       2      C          4
8       1       2      D          1

我现在想向每个组添加一个新行使用此代码,会出现错误:

df %>%
  group_by(test_nr) %>% 
  add_row(test_id = .$test_id[1], test_nr = .$test_nr[1], region = "mean", test_value = mean(.$test_value))

Error: Can't add rows to grouped data frames.
Run `rlang::last_error()` to see where the error occurred.
  

我的预期输出是:

   test_id test_nr region test_value
1        1       1      A       3.00
2        1       1      B       1.00
3        1       1      C       1.00
4        1       1      D       2.00
5        1       1   MEAN       1.75
6        1       2      A       4.00
7        1       2      B       2.00
8        1       2      C       4.00
9        1       2      D       1.00
10       1       2   MEAN       2.75

到目前为止我已经尝试过:

library(tidyverse)

df %>%
  group_by(test_nr) %>% 
  group_split() %>% 
  map_dfr(~ .x %>% 
            add_row(!!! map(.[4], mean)))

   test_id test_nr region test_value
     <dbl>   <dbl> <chr>       <dbl>
 1       1       1 A            3   
 2       1       1 B            1   
 3       1       1 C            1   
 4       1       1 D            2   
 5      NA      NA NA           1.75
 6       1       2 A            4   
 7       1       2 B            2   
 8       1       2 C            4   
 9       1       2 D            1   
10      NA      NA NA           2.75

如何修改第 1 列到第 3 列以将我的值放在那里?


事实上,我最近为此做了一个小辅助函数。这个想法 是使用group_modify()获取组数据,并且bind_rows()计算得出的汇总统计数据summarise().

代码如下:

add_summary_rows <- function(.data, ...) {
  group_modify(.data, function(x, y) bind_rows(x, summarise(x, ...)))
}

以下是它如何处理您的数据:

library(dplyr, warn.conflicts = FALSE)

df <- data.frame(
  test_id = c(1, 1, 1, 1, 1, 1, 1, 1),
  test_nr = c(1, 1, 1, 1, 2, 2, 2, 2),
  region = c("A", "B", "C", "D", "A", "B", "C", "D"),
  test_value = c(3, 1, 1, 2, 4, 2, 4, 1)
)

df %>% 
  group_by(test_id, test_nr) %>% 
  add_summary_rows(
    region = "MEAN",
    test_value = mean(test_value)
  )
#> # A tibble: 10 x 4
#> # Groups:   test_id, test_nr [2]
#>    test_id test_nr region test_value
#>      <dbl>   <dbl> <chr>       <dbl>
#>  1       1       1 A            3   
#>  2       1       1 B            1   
#>  3       1       1 C            1   
#>  4       1       1 D            2   
#>  5       1       1 MEAN         1.75
#>  6       1       2 A            4   
#>  7       1       2 B            2   
#>  8       1       2 C            4   
#>  9       1       2 D            1   
#> 10       1       2 MEAN         2.75
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

无法向分组数据框添加行 的相关文章

随机推荐

  • Android @Override 错误

    今天我终于让我的 facebook 实现工作起来了 当我开始在我的应用程序中实现它时 我通过 Override 收到以下错误 类型的 onComplete Bundle 方法 FBConnectionActivity LoginDialog
  • Windows:如何测试高dpi下的UI?

    我想测试我的应用程序的反应high dpi 设置 我指的不仅仅是 120dpi 我想测试更高的 dpi 设置 例如 150dpi 300dpi 600dpi 1000dpi 1200dpi 我的开发机器的显卡无法达到 300dpi 甚至 1
  • Angular @Input getter/setter 和非原始值

    问题 我希望能够在每次子组件绑定的对象中的属性发生更改时调用一个函数 但是 即使可以明显看到绑定的输入属性正在更新 setter 也只会被调用一次 这一切都是因为需要将子组件绑定到其父组件属性 而父组件属性恰好是具有深度嵌套属性的复杂对象
  • Asp.Net Core 3.1 Cookie 未附加 Razor 页面 C#

    Cookie 没有使用以下代码附加到页面 我尝试将 IsEssential 添加到选项中 但它不起作用 使用 Asp Net Core 3 1 Razor 页面 这是我的大部分startup cs 和附加的cookie 代码 启动 cs p
  • ORDER BY 的列有时为空

    Mysql 看起来像这样 SELECT CompanyName LastName FirstName FROM JOIN ORDER BY CompanyName LastName FirstName 现在的问题是 A 列有时是空的 或者是
  • 为什么尝试使用动态参数调用扩展方法时出现错误 CS1973

    考虑以下代码 internal static class Program public static string ExtensionMethod this string format dynamic args return format
  • 使用 ffmpeg 处理流的解码数据时出错

    我正在使用以下命令 ffmpeg i video1a flv i video1b flv i video1c flv i video2a flv i video3a flv i video4a flv i video4b flv i vid
  • 3D 游戏的 Libgdx 渲染层

    在我的第一个 3D 游戏中 我现在想要渲染地板 它实际上是一个平面 不是 libgdxPlane on y 0 我想添加一个Texture到它 这样我就可以在每个级别有不同的楼层 现在我的问题是 创建和渲染这种纹理地板的最佳方法是什么 我考
  • django 应用程序的 Heroku 推送获取“没有名为 psycopg2.extensions 的模块”

    我正在尝试将 django 应用程序推送到 heroku 并收到一个我在 heroku 或 stackoverflow 论坛中从未见过的错误 我正在使用 postgres 我不知道该从哪里开始 我在任何文档中都没有看到任何说明问题的内容 主
  • 在 TeamCity 构建期间将 nuget 包发布到 Octopus

    有一个已知问题 如果您在 TeamCity 构建期间进行部署 则会部署以前的版本 因为当前版本仅在构建完成后才可用 文档建议创建辅助 TeamCity BuildConfiguration 作为解决方法 但它很糟糕并且似乎不再起作用 有许多
  • 在 AngularJS 中的控制器之间共享数据

    我使用以下工厂从 API 获取数据并将其存储到名为 apiData 的本地变量中 app factory MyFactory function resource q var apiData var service var resource
  • android 清除字符串中的值

    我有一个应用程序 可以让您单击按钮从起始值 20 中添加和减去 5 或 5 以及 1 或 1 我对其进行了设置 这样当单击按钮时 它将将该值放入字符串并显示它 以便用户可以看到他们按下的内容的历史记录 我有一个名为 Reset 的方法 将起
  • 如何在 Android 中播放 GIF

    Hello stackoverflow我正在尝试开发一个 Android 应用程序来玩我自己的GIF 这是代码片段 MainActivity java public class MainActivity extends Activity O
  • 为什么 std::setbase(2) 不切换到二进制输出?

    cppreference 页面位于std setbase http en cppreference com w cpp io manip setbase says 除 8 10 或 16 之外的基值会将基域重置为零 这对应于十进制输出和依赖
  • 如何检查所有返回值是否均为 true?

    有没有一种简单的方法来确保所有返回的值都是 True 在下面的示例中 我有一个代表文件的对象集合 我想在继续之前确保所有源文件都存在 我将所有路径传递给 Test Path 该函数为每个文件返回 True False gt filesToU
  • 如何使用 NSJSONSerialization 类参考读取 JSON 文件?

    我需要使用 NSJSONSerialization 类参考来读取 JSON 文件 并且我找到的有关使用此类的所有示例都是从网页本身读取内容 而不是从之前创建的 JSON 文件中读取内容 任何人都知道如何使用该类解析 JSON 文件 谢谢 简
  • 如何在没有机器人的情况下使用 Telegram API?

    我不需要回复机器人 我只想进行只读调用来读取频道历史记录 也许我需要 该方法https core telegram org method messages getHistory https core telegram org method
  • jQuery ajax 处理 401 未经授权

    我正在使用 jQuery ajax 调用第三方网页 根据他们的页面 如果登录成功 他们向我发送状态代码 200 如果登录不成功 他们向我发送状态代码 401 这是我的 jquery 代码示例 此代码在 IE 上运行良好 但在 Chrome
  • Chrome 不断加载我网站的旧缓存

    我遇到了这个奇怪的问题 我的 Chrome 浏览器不断加载旧版本的网站 其代码甚至不再存在于我的服务器上 我认为这是一个典型的缓存问题 我尝试清理浏览器缓存 使用隐身模式并清除 DNS 缓存 旧的缓存页面仍在加载 这个问题似乎已经在这个谷歌
  • 无法向分组数据框添加行

    这是这个问题的后续问题如何将行添加到数据框中仅修改某些列 https stackoverflow com questions 71095723 how to add a row to a dataframe modifying only s