我的数据集包含几列:第一列“性别”有 2 个值(男/女),第二列“组”表示品种组(40 个不同的值),13 列每列代表一个特定年份,其中包含有关特定年份的年龄 (<1-20) (Some of them contain empty values, Image 1). One line marks one individual.
我希望将这些数据汇总到一个新表中,该表告诉我数据集中有多少特定年龄的特定品种组的男性/女性(计数)。年份不相关。空的年龄值意味着该个体在该年已不存在,在计算时应被忽略。图 2 显示了所需结果的示例。
这里什么样的配方合适?我正在考虑聚合函数,但由于值不是数字,所以我没有找到适用于此的正确公式。
正如 @Allan Cameron 评论的那样,R 中不存在这种数据结构。您的屏幕截图表明了以下内容:您的目标是导入第一个屏幕截图中所示的 .csv 文件(因此空白 Excel 单元格在 R 中变为
NA
)并且然后目标是在 R 中进行类似的总结,如第二个屏幕截图所示。下面示例中的dat
应说明您的(导入的)数据,下面的编码显示了一种方法,您可以如何获得比第二个屏幕截图中显示的内容(更整洁)的方法。
library(tidyverse)
dat <- tibble(
sex = c("m", "m", "f", "f"),
grp = c("grp1", "grp2", "grp4", "grp4"),
y_2008 = c(14, 15, NA, 15),
y_2009 = c(15, 16, 15, 16),
y_2010 = c(16, 17, 16, 17),
y_2011 = c(17, NA, 17, NA),
y_2012 = c(NA, NA, 18, NA),
y_2013 = NA
)
dat %>%
pivot_longer(!c(sex, grp)) %>%
mutate(n = sum(!is.na(value)), .by = c(sex, grp, value)) %>%
distinct(sex, grp, value, n) %>%
drop_na(value)