热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

如何对所有具有相同名称的列逐行汇总所有观察值?

如何解决《如何对所有具有相同名称的列逐行汇总所有观察值?》经验,为你挑选了1个好方法。

我正在查看加拿大安大略省的人口普查数据,并且列中有相同的列名(它们具有相同的名称,因为它们代表了人口普查区域的不同细分).我想对任何具有相同列名但遇到麻烦的列进行逐行求和.在我的示例数据中,只有重复的列名,但在实际数据中有几个具有相同名称的列.R中是否有矢量化方式来执行此操作?

  TORONTO HALTON  PEEL YORK BRANT HALDIMAND-NORFOLK HAMILTON MUSKOKA NIAGARA 
  20855   4011 11178 8138   996               739     3835     305    2923            
  23281   3997 11770 8417   961               684     4095     343    2970            
  24130   3900 11810 8306   972               732     4168     334    2985            
 TORONTO HALTON  PEEL  YORK BRANT HALDIMAND-NORFOLK HAMILTON MUSKOKA NIAGARA 
  39924   7863 21415 15714  1947              1428     7320     646    5675    
  44357   7820 22340 16261  1861              1369     7755     697    5775            
  46016   7679 22577 16260  1971              1447     7883     717    5868 

我试着用ifelse声明没有运气.像这样的伪代码:

# where i is the column name
for every column with name i(sum rows of each column with name == i)

非常感谢任何指导!!



1> akrun..:

我们可以split基于该数据集names的数据集和应用rowSumslist具有相同名称的数据集

do.call(cbind, lapply(split.default(dfN, names(dfN)), rowSums, na.rm = TRUE))
#    BRANT HALDIMAND.NORFOLK HALTON HAMILTON MUSKOKA NIAGARA  PEEL TORONTO  YORK
#[1,]  2943              2167  11874    11155     951    8598 32593   60779 23852
#[2,]  2822              2053  11817    11850    1040    8745 34110   67638 24678
#[3,]  2943              2179  11579    12051    1051    8853 34387   70146 24566

或者正如@thelatemail提到的,如果我们需要一个data.frame输出,包住list输出,data.frame

data.frame(lapply(split.default(dfN, names(dfN)), rowSums, na.rm = TRUE)) 

或使用 tidyverse

library(tidyverse)
dfN %>% 
   split.default(names(.))  %>% 
   map_df(reduce, `+`)
# A tibble: 3 x 9
#  BRANT HALDIMAND.NORFOLK HALTON HAMILTON MUSKOKA NIAGARA  PEEL TORONTO  YORK
#                                
#1  2943              2167  11874    11155     951    8598 32593   60779 23852
#2  2822              2053  11817    11850    1040    8745 34110   67638 24678
#3  2943              2179  11579    12051    1051    8853 34387   70146 24566

数据

dfN <- structure(list(TOROnTO= c(20855L, 23281L, 24130L), HALTON = c(4011L, 
3997L, 3900L), PEEL = c(11178L, 11770L, 11810L), YORK = c(8138L, 
8417L, 8306L), BRANT = c(996L, 961L, 972L), HALDIMAND.NORFOLK = c(739L, 
684L, 732L), HAMILTON = c(3835L, 4095L, 4168L), MUSKOKA = c(305L, 
343L, 334L), NIAGARA = c(2923L, 2970L, 2985L), TOROnTO= c(39924L, 
44357L, 46016L), HALTON = c(7863L, 7820L, 7679L), PEEL = c(21415L, 
22340L, 22577L), YORK = c(15714L, 16261L, 16260L), BRANT = c(1947L, 
1861L, 1971L), HALDIMAND.NORFOLK = c(1428L, 1369L, 1447L), HAMILTON = c(7320L, 
7755L, 7883L), MUSKOKA = c(646L, 697L, 717L), NIAGARA = c(5675L, 
5775L, 5868L)), class = "data.frame", row.names = c(NA, -3L))


尼斯.您应该能够将`lapply()`结果直接转换为`data.frame` - `data.frame(lapply(split.default(dfN,names(dfN)),rowSums,na.rm = TRUE) )`
推荐阅读
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • 本文分享了一个关于在C#中使用异步代码的问题,作者在控制台中运行时代码正常工作,但在Windows窗体中却无法正常工作。作者尝试搜索局域网上的主机,但在窗体中计数器没有减少。文章提供了相关的代码和解决思路。 ... [详细]
  • CSS3选择器的使用方法详解,提高Web开发效率和精准度
    本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • 本文介绍了Redis的基础数据结构string的应用场景,并以面试的形式进行问答讲解,帮助读者更好地理解和应用Redis。同时,描述了一位面试者的心理状态和面试官的行为。 ... [详细]
  • Java容器中的compareto方法排序原理解析
    本文从源码解析Java容器中的compareto方法的排序原理,讲解了在使用数组存储数据时的限制以及存储效率的问题。同时提到了Redis的五大数据结构和list、set等知识点,回忆了作者大学时代的Java学习经历。文章以作者做的思维导图作为目录,展示了整个讲解过程。 ... [详细]
  • 本文介绍了C++中省略号类型和参数个数不确定函数参数的使用方法,并提供了一个范例。通过宏定义的方式,可以方便地处理不定参数的情况。文章中给出了具体的代码实现,并对代码进行了解释和说明。这对于需要处理不定参数的情况的程序员来说,是一个很有用的参考资料。 ... [详细]
  • eclipse学习(第三章:ssh中的Hibernate)——11.Hibernate的缓存(2级缓存,get和load)
    本文介绍了eclipse学习中的第三章内容,主要讲解了ssh中的Hibernate的缓存,包括2级缓存和get方法、load方法的区别。文章还涉及了项目实践和相关知识点的讲解。 ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • 本文介绍了一个在线急等问题解决方法,即如何统计数据库中某个字段下的所有数据,并将结果显示在文本框里。作者提到了自己是一个菜鸟,希望能够得到帮助。作者使用的是ACCESS数据库,并且给出了一个例子,希望得到的结果是560。作者还提到自己已经尝试了使用"select sum(字段2) from 表名"的语句,得到的结果是650,但不知道如何得到560。希望能够得到解决方案。 ... [详细]
  • 本文详细介绍了Spring的JdbcTemplate的使用方法,包括执行存储过程、存储函数的call()方法,执行任何SQL语句的execute()方法,单个更新和批量更新的update()和batchUpdate()方法,以及单查和列表查询的query()和queryForXXX()方法。提供了经过测试的API供使用。 ... [详细]
  • Java学习笔记之面向对象编程(OOP)
    本文介绍了Java学习笔记中的面向对象编程(OOP)内容,包括OOP的三大特性(封装、继承、多态)和五大原则(单一职责原则、开放封闭原则、里式替换原则、依赖倒置原则)。通过学习OOP,可以提高代码复用性、拓展性和安全性。 ... [详细]
  • Go Cobra命令行工具入门教程
    本文介绍了Go语言实现的命令行工具Cobra的基本概念、安装方法和入门实践。Cobra被广泛应用于各种项目中,如Kubernetes、Hugo和Github CLI等。通过使用Cobra,我们可以快速创建命令行工具,适用于写测试脚本和各种服务的Admin CLI。文章还通过一个简单的demo演示了Cobra的使用方法。 ... [详细]
  • 本文讨论了在openwrt-17.01版本中,mt7628设备上初始化启动时eth0的mac地址总是随机生成的问题。每次随机生成的eth0的mac地址都会写到/sys/class/net/eth0/address目录下,而openwrt-17.01原版的SDK会根据随机生成的eth0的mac地址再生成eth0.1、eth0.2等,生成后的mac地址会保存在/etc/config/network下。 ... [详细]
  • 本文介绍了深入浅出Linux设备驱动编程的重要性,以及两种加载和删除Linux内核模块的方法。通过一个内核模块的例子,展示了模块的编译和加载过程,并讨论了模块对内核大小的控制。深入理解Linux设备驱动编程对于开发者来说非常重要。 ... [详细]
author-avatar
茶人2502933107
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有