如何使用 dcast() 对列的值求和?

2023-12-21

我被 dcast 函数困住了;我正在尝试为每个计数年的许多物种的个体创建一个总和表。

我有一个包含 3 列的数据框:(1) 年份(因子)、(2) 物种名称(因子)和 (3) 计数(数字)。

Year    Species Counts
2002    SP1 2
2002    SP1 3
2004    SP1 2
2002    SP2 8
2002    SP2 2
2002    SP3 1
2002    SP3 1
2003    SP3 2
2004    SP3 1

我正在尝试获得这种带有总和的表格:

    2002    2003    2004
SP1 5   0   2
SP2 10  0   0
SP3 2   2   1

聚合没有达到我想要的效果。我正在使用dcast像这样的函数:

dcast( DF, Species ~ Year , sum)

无论我如何尝试,总和与因子都不起作用。我收到此错误消息:

(Error in Summary.factor(integer(0), na.rm = FALSE): sum not meaningful for factors 

当我尝试默认函数(长度)时,我得到的是行数的总和,而不是个体的总和。当我尝试设置总和来处理我的“计数”列而不是其他因素时,它也不起作用或者我收到相同的错误消息。

我怎样才能得到那种带有计数总和的表格?


EDIT:

该函数计算虚假总和并生成个体。在这里,我向您展示了使用 Excel 中的交叉表和 R 中的交叉表得出的总和的比较:

EXCEL                   2003    2004    2005    2006    2007    2008    2009
Anthocharis_cardamines  1   0   2   2   0   1   0
Apatura_ilia            0   0   0   0   1   0   0
Aporia_crataegi         2   3   29  26  6   4   3
Brintesia_circe         126 217 199 303 64  99  55


DCAST                   2003    2004    2005    2006    2007    2008    2009
Anthocharis_cardamines  2   0   4   4   0   2   0
Apatura_ilia            0   0   0   0   2   0   0
Aporia_crataegi         4   6   258 205 25  8   6
Brintesia_circe         883 1334    1050    1770    490 848 354

计算出的数字甚至不符合我昨天的行数总和。 这些款项如何运作?

EDIT 2:

>dput(head(counts, 10)
structure(list(year = structure(c(16L, 16L, 16L, 16L, 16L, 16L, 
16L, 16L, 16L, 15L), .Label = c("1994", "1995", "1996", "1997", 
"1998", "1999", "2000", "2001", "2002", "2003", "2004", "2005", 
"2006", "2007", "2008", "2009"), class = "factor"), species = structure(c(146L, 
146L, 146L, 146L, 146L, 146L, 146L, 146L, 146L, 146L), .Label = c("Aglais_urticae", 
"Anthocharis_cardamines", "Anthocharis_euphenoides", "Apatura_ilia", 
"Apatura_iris", "Aphantopus_hyperantus", "Aporia_crataegi", "Araschnia_levana", 
"Arethusana_arethusa", "Argynnis_adippe", "Argynnis_aglaja", 
"Argynnis_paphia", "Aricia_agestis", "Boloria_dia", "Boloria_euphrosyne", 
"Boloria_selene", "Brenthis_daphne", "Brenthis_ino", "Brintesia_circe", 
"Callophrys_rubi", "Carcharodus_alceae", "Carcharodus_floccifera", 
"Carcharodus_lavatherae", "Carterocephalus_palaemon", "Celastrina_argiolus", 
"Charaxes_jasius", "Chazara_briseis", "Clossiana_dia", "Coenonympha_arcania", 
"Coenonympha_dorus", "Coenonympha_glycerion", "Coenonympha_oedippus", 
"Coenonympha_pamphilus", "Coenonympha_tullia", "Colias_alfacariensis", 
"Colias_croceus", "Colias_hyale", "Colias_palaeno", "Cupido_alcetas", 
"Cupido_argiades", "Cupido_minimus", "Cupido_osiris", "Diacrisia_sannio", 
"Erebia_aethiops", "Erebia_euryale", "Erebia_ligea", "Erebia_medusa", 
"Erebia_meolans", "Erynnis_tages", "Euchloe_crameri", "Euclidia_glyphica", 
"Euphydryas_aurinia", "Euplagia_quadripunctaria", "Everes_argiades", 
"Fabriciana_adippe", "Glaucopsyche_alcon", "Glaucopsyche_alexis", 
"Glaucopsyche_arion", "Glaucopsyche_melanops", "Glaucopsyche_nausithous", 
"Glaucopsyche_teleius", "Gonepteryx_cleopatra", "Gonepteryx_rhamni", 
"Hamearis_lucina", "Hesperia_comma", "Heteropterus_morpheus", 
"Hipparchia_fidia", "Hipparchia_semele", "Hyles_euphorbiae", 
"Hyponephele_lupinus", "Inachis_io", "Iphiclides_podalirius", 
"Issoria_lathonia", "Lampides_boeticus", "Lasiommata_maera", 
"Lasiommata_megera", "Leptidea_sinapis", "Leptotes_pirithous", 
"Libelloides_coccajus", "Libelloides_longicornis", "Limenitis_camilla", 
"Limenitis_populi", "Limenitis_reducta", "Lopinga_achine", "Lycaena_alciphron", 
"Lycaena_dispar", "Lycaena_helle", "Lycaena_phlaeas", "Lycaena_tityrus", 
"Macroglossum_stellatarum", "Maculinea_arion", "Maniola_jurtina", 
"Melanargia_arge", "Melanargia_galathea", "Melanargia_lachesis", 
"Melanargia_occitanica", "Melitaea_cinxia", "Melitaea_diamina", 
"Melitaea_didyma", "Melitaea_phoebe", "Mesoacidalia_aglaja", 
"Minois_dryas", "Neohipparchia_statilinus", "Neozephyrus_quercus", 
"Nymphalis_antiopa", "Nymphalis_polychloros", "Ochlodes_sylvanus", 
"Ochlodes_venatus", "Palaeochrysophanus_hippothoe", "Papilio_machaon", 
"Pararge_aegeria", "Pieris_napi", "Plebeius_agestis", "Plebeius_argyrognomon", 
"Polygonia_c-album", "Polyommatus_bellargus", "Polyommatus_coridon", 
"Polyommatus_escheri", "Polyommatus_icarus", "Polyommatus_semiargus", 
"Polyommatus_thersites", "Pontia_daplidice", "Pseudopanthera_macularia", 
"Pseudophilotes_baton", "Pseudotergumia_fidia", "Pyrgus_malvae", 
"Pyronia_bathseba", "Pyronia_cecilia", "Pyronia_tithonus", "Quercusia_quercus", 
"Satyrium_acaciae", "Satyrium_esculi", "Satyrium_ilicis", "Satyrium_pruni", 
"Satyrium_spini", "Satyrium_w-album", "Smerinthus_ocellatus", 
"Speyeria_aglaja", "Spialia_sertorius", "Thecla_betulae", "Thymelicus_acteon", 
"Thymelicus_lineola", "Thymelicus_sylvestris", "Vanessa_atalanta", 
"Vanessa_cardui", "Zerynthia_polyxena", "Zygaena_carniolica", 
"Zygaena_ephialtes", "Zygaena_erythrus", "Zygaena_fausta", "Zygaena_filipendulae", 
"Zygaena_hilaris", "Zygaena_loti", "Zygaena_occitanica", "Zygaena_purpuralis", 
"Zygaena_sarpedon", "Zygaena_transalpina"), class = "factor"), 
    Counts = c(2, 2, 2, 2, 2, 17, 52, 2, 2, 17)), .Names = c("year", 
"species", "Counts"), row.names = 5479:5488, class = "data.frame")

> str(counts)
'data.frame':   3161 obs. of  3 variables:
 $ year   : Factor w/ 16 levels "1994","1995",..: 16 16 16 16 16 16 16 16 16 15 ...
 $ species: Factor w/ 157 levels "Aglais_urticae",..: 146 146 146 146 146 146 146 146 146 146 ...
 $ Counts : num  2 2 2 2 2 17 52 2 2 17 ...

我希望它有帮助...


A dcast() version

这对我有用:

require("reshape2")
dcast(counts, Year ~ Species, value.var = "Counts", fun.aggregate = sum)

> dcast(counts, Year ~ Species, value.var = "Counts", fun.aggregate = sum)
  Year SP1 SP2 SP3
1 2002   5  10   2
2 2003   0   0   2
3 2004   2   0   1

检查一下counts$Counts是数字;查看输出str(counts) where counts是你的DF。我创建counts via:

counts <- read.table(text = "Year    Species Counts
2002    SP1 2
2002    SP1 3
2004    SP1 2
2002    SP2 8
2002    SP2 2
2002    SP3 1
2002    SP3 1
2003    SP3 2
2004    SP3 1", header = TRUE)

这是使用

> sessionInfo()
R version 3.0.1 (2013-05-16)
Platform: x86_64-pc-linux-gnu (64-bit)

locale:
 [1] LC_CTYPE=en_GB.UTF-8       LC_NUMERIC=C              
 [3] LC_TIME=en_CA.UTF-8        LC_COLLATE=en_GB.UTF-8    
 [5] LC_MONETARY=en_CA.UTF-8    LC_MESSAGES=en_GB.UTF-8   
 [7] LC_PAPER=C                 LC_NAME=C                 
 [9] LC_ADDRESS=C               LC_TELEPHONE=C            
[11] LC_MEASUREMENT=en_CA.UTF-8 LC_IDENTIFICATION=C       

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
[1] reshape2_1.2.2

loaded via a namespace (and not attached):
[1] plyr_1.8      stringr_0.6.2 tools_3.0.1

替代基本 R 版本使用xtabs()

您可能还想尝试xtabs()基本R自带的函数

xtabs(Counts ~ Year + Species, data = counts)

> xtabs(Counts ~ Year + Species, data = counts)
      Species
Year   SP1 SP2 SP3
  2002   5  10   2
  2003   0   0   2
  2004   2   0   1
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 dcast() 对列的值求和? 的相关文章

  • 如何使用字符对象使用 dplyr 重命名列[重复]

    这个问题在这里已经有答案了 我想通过使用变量以动态方式使用 dplyr 重命名列 但是 它只是为列命名变量的名称 而不是其内容 有任何想法吗 colnames y 1 time channel 1 channel 2 channel 3 c
  • 将嵌入其他文本的长州名称转换为两个字母的州缩写

    我的目标是识别以具有其他文本的字符向量写出的美国各州 并将各州转换为缩写形式 例如 北卡罗来纳州 到 北卡罗来纳州 如果向量只有长形式的状态名称 那就很简单 但是 我的向量在随机位置有其他文本 如示例 states 中所示 states l
  • 导入 mgcv 失败,因为找不到 Rlapack.dll

    我想通过使用链接到 IronPython 中的 R 统计包R NET http rdotnet codeplex com 图书馆 它一直工作得很好 但现在我需要使用 R 的mgcv http cran r project org web p
  • 保存 d3heatmap 生成的热图

    我正在尝试保存由d3heatmap https github com rstudio d3heatmap转换为 pdf 文件 但文件总是损坏 library d3heatmap pdf file heat pdf d3heatmap mtc
  • 添加不同 data.frame 中缺失的列并填充 0 [重复]

    这个问题在这里已经有答案了 我有以下情况 df1 a b c d 1 2 3 4 df2 a c 5 6 我想要的结果是 用 df1 中缺失的列填充第二个 data frame 并用零填充它们 所以结果应该是 df3 a b c d 5 0
  • 在 RGUI 中自动保存 R 源

    是否可以告诉 RGui 自动保存 R 源代码 以便它们在系统崩溃时不会丢失 我非常怀念这个功能 因为我的系统时不时地崩溃 而且我不想仅仅因为需要这个功能而使用 R Studio 或其他一些 IDE 我喜欢 RGui 提供的简单性 None
  • 查找表中第三个四分位数以上的频率

    我有一个大数据框架 对 57 个变量的超过 239k 观察值 其中包含一些疾病描述以及针对不同年龄段的人针对这些疾病使用的药物 我想在每种疾病描述的使用频率前四分之一中找到这些药物 为了制作一个可重现的示例 我创建了一个包含 1000 个观
  • R Shinydashboard 根据选项卡选择显示/隐藏 UI 元素

    如果有人可以提供帮助 我正在努力满足要求 我必须根据用户的选项卡面板选择在仪表板侧栏上显示 隐藏一些元素 这是 UI 代码的一部分 可让您了解我的应用程序的结构 我需要仅在 tabpPanel 2 上显示 Fourthoutput Fift
  • R 用簇绘制热图,但隐藏树状图

    默认情况下 Rheatmap将聚集行和列 mtscaled as matrix scale mtcars heatmap mtscaled scale none 我可以禁用集群 heatmap mtscaled Colv NA Rowv N
  • 是否可以旋转 R 中的绘图(基本图形)?

    我搜索了这个 发现使用 grid 有多种方法可以旋转图像 并且对于某些绘图 您可以使用它们的旋转 例如plot x y 而不是plot y x 不过我想知道是否有R 中旋转绘图的通用方法 适用于基础图形中生成的任何绘图 您可以导出图形 将其
  • selectInput 的动态数量

    我是闪亮的新手 所以这可能是一个非常基本的问题 我想编写一个闪亮的应用程序 其中用户输入 n 我们得到 n 个 selectInput 选项 但我无法做到这一点 基本上任何形式的 for 循环都不起作用 我尝试的代码如下 library s
  • 如何禁用“保存工作区图像?” R 中的提示?

    当我退出交互式 R shell 时 它每次都会显示一个烦人的提示 gt gt Save workspace image y n c n 我总是对此回答 不 因为如果我想保存我的工作 我就会这么做before试图退出 如何去掉这个提示呢 No
  • mutate() 尝试在使用美元符号运算符时使用全局变量的值进行提取

    我使用得到了有趣的结果mutate with a 当全局环境中碰巧存在与要提取的元素同名的变量时进行提取 我正在运行 R 3 1 3 和 dplyr 0 4 3 9 这工作正常 library dplyr df lt data frame
  • 使用两列数据分割数据帧并对结果数据帧列表应用通用转换

    我想根据两列中的值将一个大数据帧拆分为一个数据帧列表 然后 我想对结果列表中的所有数据帧应用通用数据转换 滞后转换 我知道 split 命令 但只能让它一次处理一列数据 您需要将所有想要分割的因素放在一个列表中 例如 split mtcar
  • 在ggplot2中绘制大多边形地图的小区域

    我有一个 shapefile 我使用它在 ggplot2 中进行了强化和绘制geom polygon 我怎样才能只绘制这张地图的一小部分区域 我的完整地图看起来不错 但我的小区域很混乱 这是一个工作示例 这个小形状文件可以从以下位置获得 h
  • 使用不同的阈值替换多列中的值

    我有一个包含多个列的数据集 其中包含我想要转换为二进制的定量数据 为此 我想使用每列不同的阈值 Example Input antigen1 antigen2 antigen3 antigen4 1 215 421 2 12 2 1524
  • 如何很好地注释 ggplot2(手册)

    Using ggplot2我通常使用geom text和类似的东西position jitter注释我的情节 然而 对于一个漂亮的情节 我经常发现手动注释是值得的 像下面这样 data2 lt structure list type str
  • 从 glmnet 获取变量选择顺序

    我一直在使用 glmnet R 包为一个目标变量 Y 数字 和 762 个协变量构建 LASSO 回归模型 我使用 glmnet 函数 然后coef fit s 0 056360 获取该特定 lambda 值的系数值 我现在需要的是变量选择
  • 如何测试字符串中的前三个字符是r中的字母还是数字?

    下面给出了我拥有的数据集的示例 请注意 总数据集中我有超过两列 ID X 1 MJF34 2 GA249D 3 DEW235R 4 4SDFR3 5 DAS3 我想测试 X 中的前三个字符是否是字母 如果是 那么我想替换该值以仅显示前三个字
  • 闪亮的本地部署错误:输入字符串 1 无效 UTF-8

    我很惊讶地发现一个突然的错误 我的 ShinyApp 停止工作并出现未知错误 提示 输入字符串 1 无效 UTF 8 即使在昨天 该应用程序也可以正常运行 但是突然停止了 下面是我运行时的错误描述runApp gt runApp Liste

随机推荐

  • 如何用空格填充 NSString?

    例如 我需要 NSString 至少有 8 个字符 而不是使用循环在其上添加左侧填充空格 有没有办法做到这一点 Examples Input Output Hello Hello Bye Bye Very Long Very Long ab
  • 优化导致超时? [复制]

    这个问题在这里已经有答案了 我正在开发一个程序 该程序接受一个整数并查找该整数具有的连续总和的组合数量 数字13可以表示为连续正数之和 整数6 7 十四可以表示为2 3 4 5 也是一个和 连续正整数 有些数字可以表示为 以多种方式求连续正
  • 我知道回调函数是异步运行的,但为什么呢?

    语法的哪一部分提供了该函数应该在其他线程中运行并且是非阻塞的信息 让我们考虑一下 Node js 中的简单异步 I O var fs require fs var path process argv 2 fs readFile path u
  • 用户定义对象的类型转换

    就像我们对 ToString 所做的那样 有没有办法定义转换方法 obj MyClass another class obj 无需在 php 中输入强制类型转换 Edit 由于这个话题似乎引起了一些混乱 我想我应该详细说明一下 在 Java
  • 更改数据捕获仅用于更新和删除

    我们的数据库插入量不大 每晚 200 500k 但更新量很少 每天可能几百个 我需要无限期地保留对插入行本身的所有更改的历史记录 但不是实际的插入 我很想使用更改数据捕获 但支持此操作所需的空间量不可用 如果我能弄清楚做以下其中一项 我的生
  • python从excel创建字典

    我有一个包含 2 列的 Excel 工作表 第一列是姓名 第二列是年龄 我想创建一个字典 其中名称是键 年龄是值 这是代码 但它错误地创建了字典 keyValues x value for x in worksheet col 0 data
  • WPF 的轻量级文本库?

    有谁知道有一个轻度标记文本到样式文本格式化库 即类似 Markdown 或 Textile NET 的东西 但它会生成本机 XAML 文档 或者更确切地说 FlowDocument 模型或类似的可以直接显示在 WPF 应用程序中 以避免使用
  • PHP 无法解析时间字符串

    我需要根据从表单收到的值创建一个日期时间 问题是该值像字符串一样被接收 2016 10 10T08 29 06 959Z 我需要像这样接收2016 10 10T08 29 06 959Z不带引号 因为如果我收到带引号的消息 则会出现下一个错
  • 当进程提升时,如何获取非提升会话的 Windows 身份验证 ID

    我需要获取由 GetTokenInformation 返回的 AuthenticationID 和登录站的用户的 TokenStatistics 类 无论我是否被提升 让我给你一些更多的信息 假设我这样做 var Result GetTok
  • CodeIgniter 路由在 Nginx 下不工作

    Ubuntu 16 04 参考设置this https www howtoforge com tutorial installing nginx with php7 fpm and mysql on ubuntu 16 04 lts lem
  • 无法解码Spring云流DefaultKafkaHeaderMapper中的json类型

    我们正在使用 spring cloud stream 并计划升级我们的 Kafka 版本 我们的应用程序使用spring cloud stream 2 0 0 spring kafka 2 1 7 与 apache kafka 服务器1 0
  • IVY - 设置默认传递值

    如何覆盖 IVY 中传递性的默认值 我假设您不希望 ivy 下载 a 的临时依赖项依赖性声明在你的ivy xml file 选项 1 传递参数 ivy xml
  • 如何平移视图,但保持其原始起始位置

    我正在对视图进行动画处理 以便在键盘出现时隐藏底部导航栏 我的问题是 我可以平移底部导航栏 主 消息区域 可以跟随它 但在 消息区域 的顶部形成一个间隙 有没有办法进行翻译 但保持 消息区域 的顶部与操作栏对齐 Here is an exa
  • Cordova iOS 模拟器电话和邮件无法正常工作

    我无法在我的 iOS Cordova 应用程序上通过 href 发起呼叫和发送邮件 对于代码 a href Call a 我在 Xcode 控制台中收到错误如下 There is no registered handler for URL
  • Android 有相当于 JPanel 的东西吗?

    Android有相当于Java的面板吗 我需要具有设定大小的东西 我可以动态添加不同的视图 有这样的技术吗 我基本上想要一个在 xml 代码中具有设定大小的空白区域 稍后我可以在活动中添加按钮 稍后添加的原因是按钮的数量和按钮的大小变化很大
  • 使用 :after 选择器添加

    我试图在页面中的每篇文章后面 自动 添加一条水平线 有没有办法使用 after 选择器来做到这一点 我希望能够将其设计成这样 article padding 10px article after content hr 这对于纯 CSS 来说
  • 如何在 Laravel 测试用例中模拟 xmlHttpRequests?

    更新内容见下文 我的控制器区分 ajax 和其他请求 使用Request ajax 作为条件 这工作得很好 但我想知道是否有一种方法可以对处理请求的控制器进行单元测试 测试应该是什么样的 可能是这样的 但它不起作用
  • 如何使用 ImageIcon 制作可拖动组件

    我正在尝试为国际象棋游戏构建一个用户界面 我用过一个网格包布局洋溢着JLabels棋子是图像图标 of the JLabels 现在我想通过在棋盘上拖动棋子来移动棋子 有没有办法做到这一点图像图标 或者有更好的方法来解决问题吗 编辑 这是一
  • MPMoviePlayerController 存在黑色背景

    我制作 iOS 应用程序 我使用 MPMoviePlayerController 但这显示黑色背景 我认为这个问题可以通过这个URL解决 但我不明白使用方式 MPMoviePlayerController 背景颜色不会粘住 https st
  • 如何使用 dcast() 对列的值求和?

    我被 dcast 函数困住了 我正在尝试为每个计数年的许多物种的个体创建一个总和表 我有一个包含 3 列的数据框 1 年份 因子 2 物种名称 因子 和 3 计数 数字 Year Species Counts 2002 SP1 2 2002