如何根据大于的条件对行求和

Spo*_*DLX 5 r sum matrix dplyr tidyverse

我正在尝试从 Excel 迁移到 R,并希望做一些类似于SumIfsExcel 的事情。我想创建一个新列,它是多列中的行的总和,但前提是该值大于 25。

我的数据如下所示,这是农场中不同作物的面积,并且想要添加一个新的农业总面积列,但仅包括超过 25 英亩的作物:

道具ID 状态 牧场 大豆 玉米
1 威斯康辛 20 45 75
2 明尼苏达州 10 80 122
3 明尼苏达州 152 0 15
4 伊尔 0 10 99
5 伊尔 75 38 0
6 威斯康辛 30 45 0
7 威斯康辛 68 55 0

我正在寻找一个像这样的新表:

道具ID 状态 牧场 大豆 玉米 总计标签
1 威斯康辛 20 45 75 120
2 明尼苏达州 10 80 122 第202章
3 明尼苏达州 152 0 15 152
4 伊尔 0 10 20 0
5 伊尔 15 15 20 0
6 威斯康辛 30 45 0 75
7 威斯康辛 50 55 0 105

我想使用索引 [3:5] 而不是名称来引用列进行求和,因为我在不同的数据集中有不同的作物。

我假设使用 mutate 或 summarize 来完成我需要做的事情,但我无法弄清楚。

akr*_*run 3

我们可以将那些值小于 25 的行替换为 NA 或 0,然后使用rowSums

library(dplyr)
df1 <- df1 %>% 
  mutate(Total_ag = rowSums(across(where(is.numeric), 
     ~ replace(.x, .x < 25, NA)), na.rm = TRUE))
Run Code Online (Sandbox Code Playgroud)

类似的选项在base R

df1$Total_ag <- rowSums(replace(df1[3:5], df1[3:5] < 25, NA), na.rm = TRUE)
Run Code Online (Sandbox Code Playgroud)