gpt4 book ai didi

r - 如何使用带条件的 rowSums 返回二进制值?

转载 作者:行者123 更新时间:2023-12-04 09:43:23 26 4
gpt4 key购买 nike

假设我有一个数据框,其中有一列用于汇总数据。如果列 a、b 或 c 中的任何值不为零,那么在新列中返回二进制 0 或 1 的最有效方法是什么? rowSums 可以作为总数,但如果有任何不同的值,我还需要一个简单的指示符。

tt <- data.frame(a=c(0,-5,0,0), b=c(0,5,10,0), c=c(-5,0,0,0))
tt[, ncol(tt)+1] <- rowSums(tt)

这会产生:

> tt
a b c V4
1 0 0 -5 -5
2 -5 5 0 0
3 0 10 10 20
4 0 0 0 0

第四列是前三列数据的简单总和。如果任何值与前三列上设置的条件不同,如何添加返回二进制 1/0 值的第五列?

例如,如果 a、b 或 c 中的任何一个不是 0,是否有一种简单的方法可以返回 1?

最佳答案

as.numeric(rowSums(tt != 0) > 0)
# [1] 1 1 1 0

tt != 0 为我们提供了一个逻辑矩阵,告诉我们 tt 中哪些值不等于 0。

当每一行之和大于零时(rowSums(tt != 0) > 0),我们知道该行中至少有一个值不为零。

然后我们将结果转换为数字(as.numeric(.)),我们得到一个二进制向量结果。

关于r - 如何使用带条件的 rowSums 返回二进制值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52822366/

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