gpt4 book ai didi

r - 与 Excel 中的 sumif 函数等效的简洁 R 代码 - 特别适用于数据框行

转载 作者:行者123 更新时间:2023-12-04 21:55:53 26 4
gpt4 key购买 nike

我需要从数据框中的列子集中选择性地跨行添加值。值可以采用整数 0、1、2 或 3。2 和 3 的总和(不是 2 和 3 的计数,这很容易)给出了我们正在测量的“强度”。假设我的数据框有 60 列长,我只想查看第 2 到第 11 列。实现这一点(一种方式)的 excel 代码非常简单:=sumif(a2:a11,">1") .这将添加该范围内的所有 2 和 3。

虽然我用过 aggregate()过去,关于这个主题的大多数答案并不是真的想做我想做的事,而且我无法找到获得 aggregate() 的方法。以我需要的方式运作。我也对试图获得 rowSums() 感到困惑。去做这个。

最终我意识到我可以做到以下几点:

apply(data[,2:11], 1, function(x)sum(2*(x==2), 3*(x==3), na.rm=T))

这是迄今为止我发现的最快和最优雅的方式来复制我的特定期望行为,相当于 Excel 的 sumif。 .

如果有人有更好的方法,我会很高兴听到它。

最佳答案

#DATA
set.seed(42)
df = data.frame(matrix(sample(0:3, 250, replace = TRUE), ncol = 50))

以下是使用 rowSums() 的方法
rowSums(df[,2:11] * (df[,2:11] > 1), na.rm = TRUE)
#[1] 18 13 11 19 11

与您的解决方案进行比较
apply(df[,2:11], 1, function(x) sum(2*(x==2), 3*(x==3), na.rm=TRUE))
#[1] 18 13 11 19 11

关于r - 与 Excel 中的 sumif 函数等效的简洁 R 代码 - 特别适用于数据框行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45043665/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com