我想用R来计算每年每朵花的总和.下面是一个例子,展示了表格的外观(表1)和我想要的结果(表2).我知道如何以长表格式进行代码计算,但不确定如何以宽表格式进行计算.注意:我使用的是package:dplyr

(表1)

flower 1902 1950 2010 2012 2021
lily 23 0 0 8 5
rose 50 60 5 16 0
daisy 30 7 10 2 0

我需要计算每年每朵花的总数.最终结果应该给我:

(表2)

flower 1902 1950 2010 2012 2021
lily 23 23 23 31 36
rose 50 110 115 131 131
daisy 30 37 47 49 49

推荐答案

以下是获得预期结果的一种方法:

您的数据框:

dat <- structure(list(flower = c("lily", "rose", "daisy"), X1902 = c(23L, 
50L, 30L), X1950 = c(0L, 60L, 7L), X2010 = c(0L, 5L, 10L), X2012 = c(8L, 
16L, 2L), X2021 = c(5L, 0L, 0L)), class = "data.frame", row.names = c(NA, 
-3L))

应用计算累积和的函数,并应用于第2列至第6列的每一行数据:

dat[1:nrow(dat), 2:6] <- t(apply(dat[1:nrow(dat), 2:6], 1, function(x) cumsum(c(x))))

# The result
dat
  flower X1902 X1950 X2010 X2012 X2021
1   lily    23    23    23    31    36
2   rose    50   110   115   131   131
3  daisy    30    37    47    49    49

@benson23善意地建议使用以下更简单的代码来获得相同的结果:

dat[, 2:6] <- t(apply(dat[,2:6], 1, cumsum))

 flower X1902 X1950 X2010 X2012 X2021
1   lily    23    23    23    31    36
2   rose    50   110   115   131   131
3  daisy    30    37    47    49    49

R相关问答推荐

如果行和列名以相同的开头,将矩阵值设置为0

删除facet_wrap标签之间的水平线

列出用m n个值替换来绘制n个数字的所有方法(i.o.w.:R中大小为n的集合的所有划分为m个不同子集)

检测(并替换)字符串中的数学符号

R中具有gggplot 2的Likert图,具有不同的排名水平和显示百分比

如何计算R数据集中每个女性的子元素数量?

提取第一个下划线和最后一个下划线之间的任何内容,例外情况除外

将选定的索引范围与阈值进行比较

从多个可选列中选取一个值到一个新列中

如何在PDF格式的kableExtra表格中显示管道字符?

如何平滑或忽略R中变量的微小变化?

使用不同的定性属性定制主成分分析中点的 colored颜色 和形状

循环遍历多个变量,并将每个变量插入函数R

将列的值乘以在不同数据集中找到的值

删除字符串R中的重复项

无法将条件case_when()应用于使用!!创建的新变量Mutations

如何在刻面和翻转堆叠条形图中对齐geom_text()

将字符变量出现次数不相等的字符框整形为pivot_wider,而不删除重复名称或嵌套字符变量

真实世界坐标的逆st_变换

如何在基数R中根据矩阵散点图中的因子给数据上色?