gpt4 book ai didi

r - 有条件地更改最后一列的值

转载 作者:行者123 更新时间:2023-12-05 09:09:24 25 4
gpt4 key购买 nike

我有一个 data.frame 并希望根据所有先前(第一列除外!)列的值更改最后一列的值。

如果我有:

id v1 v2 v3 wei
1 NA NA NA 1
2 1 1 2 2
3 1 1 NA 1
4 1 1 1 3

我需要得到

id v1 v2 v3 wei
1 NA NA NA 0
2 1 1 2 2
3 1 1 NA 1
4 1 1 1 3

基本上,如果我有所有以“v”开头且缺少值的变量,wei 需要为 0。对于 df 也会发生同样的情况,其中变量中的所有值都等于 0。因此它应该适用于 NA 或 0。

这可能吗?我想保留名为 wei 的同一列,只是“根据条件更新值”。

最佳答案

使用 rowSums :

cols <- grep('^v', names(df))
df$wei[rowSums(is.na(df[cols])) == length(cols) |
rowSums(df[cols] == 0, na.rm = TRUE) == length(cols)] <- 0
df

# id v1 v2 v3 wei
#1 1 NA NA NA 0
#2 2 1 1 2 2
#3 3 1 1 NA 1
#4 4 1 1 1 3

这会将 wei 值变为 0,其中所有“v”列都是 NA 或 0。

如果有一行同时包含 0 和 NA,我们可以这样做:

df$wei[rowSums(is.na(df[cols])|df[cols] == 0, na.rm = TRUE) == length(cols)] <- 0

关于r - 有条件地更改最后一列的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62494797/

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