【问题标题】:How to sum a column in R filtered by the value of another column? Or to a specific row?如何对 R 中按另一列的值过滤的列求和?还是到特定的行?
【发布时间】:2020-11-09 21:12:09
【问题描述】:

当另一列是特定值时,我想查找数据集的列总和。下面是我的数据的屏幕截图,我想对每次迭代的 farmID 求和。

我的猜测是代码是 IF(iteration=x), sum(FarmID) 但我不知道如何实现。

部分数据截图

【问题讨论】:

  • 请使用dput添加数据,而不是图像。还显示相同的预期输出。请阅读有关how to ask a good question 的信息以及如何提供reproducible example。
  • 它将类似于:sum( df$farmid [ df$iteration==x] )。
  • 啊哈!是:sum(df$`Farm ID`[which(df$Iteration==x)]) 终于在这个帖子里找到了:stackoverflow.com/questions/10827705/conditional-sum-in-r>

标签: r


【解决方案1】:

另一种方法是使用library(dplyr) 函数。 例如,您可以通过迭代将农场 ID 相加:

yourdata %>% 
  group_by(Iteration) %>% 
  summarise(Farm_ID_sum = sum(Farm ID))

一个例子:

example <- data.frame(
   "Iteration" = sample(1:5, 20, replace = TRUE), 
   "FarmID" = sample(1:500, 20, replace = TRUE)
   )

example %>% 
   group_by(Iteration) %>% 
   summarise(Farm_ID_sum = sum(FarmID))

# Gives the output:
# A tibble: 5 x 2
  Iteration Farm_ID_sum
      <int>       <int>
1         1         790
2         2         694
3         3         391
4         4        1588
5         5        1828

【讨论】:

  • 这太棒了!谢谢你。我刚刚开始寻找一种方法,可以在一行中完成所有操作,而不是每次迭代。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-10
  • 1970-01-01
  • 2022-11-29
  • 2021-10-29
  • 2023-03-14
相关资源
最近更新 更多