r - 通过包含字符串的变量跨行变异或汇总
问题描述
我想创建一个新的数据表,它是包含字符串的变量的行总和。我一直在尝试使用 new dplyr 将其作为菜鸟保留在 tidyverse 中across
。非常感谢帮助。
dat<- data.frame("Image" = c(1,2,3,4),
"A" = c(1,2,3,4),
"A:B"= c(5,6,7,8),
"A:B:C"= c(9,10,11,12))
获得包含“A”、“B”或“C”的变量行的总和。
datsums<- data.frame("Image" = c(1,2,3,4),
"Asum"= c(15,18,21,24),
"Bsum"=c(14,16,18,20),
"Csum"=c(9,10,11,12))
我使用较新的 dplyr 动词没有成功:
datsums<- dat %>% summarise(across(str_detect("A")), sum, .names ="Asum",
across(str_detect("B")), sum, .names="Bsum",
across(str_detect("C")), sum, .names"Csum")
解决方案
使用pivot_longer
和pivot_wider
library(tidyverse)
dat %>%
pivot_longer(-Image) %>%
separate_rows(name, sep = "\\.") %>%
pivot_wider(Image,
names_from = name,
values_from = value,
values_fn = sum,
names_prefix = "sum")
#> # A tibble: 4 x 4
#> Image sumA sumB sumC
#> <dbl> <dbl> <dbl> <dbl>
#> 1 1 15 14 9
#> 2 2 18 16 10
#> 3 3 21 18 11
#> 4 4 24 20 12
由reprex 包(v0.3.0)于 2020-12-07 创建
推荐阅读
- python-3.x - 我们如何使用 Flask 对 SQL Server 搜索结果进行分页
- mysql - 如何创建一个 jpa 查询,该查询需要多个(动态)范围的 between 子句来获取结果
- file - 八度帮助命令错误:__makeinfo__:无法创建临时文件
- jquery - Jquery获取动态选择的选定选项
- java - 如何使用 Spring Boot Hibernate 在 Postgresql 中表的 XML 类型列中保存 XML 字符串
- statistics - 如果数据集中的一些实际值是 0 值,如何计算 MAPE?
- ruby-on-rails - app/views/physicians/show.html.erb:47:语法错误,意外 '\n',期待 &。或 :: 或 '[' 或 '.'
- python-3.x - Python Card 游戏有助于简化 if/elif 语句
- python - 使用python,如何在目录中找到不同的python脚本然后运行
- shell - 如何删除目录的每个文件中的空行?