gpt4 book ai didi

r - 逐行检查列中是否存在值并逐行更新新列

转载 作者:行者123 更新时间:2023-12-02 03:24:43 34 4
gpt4 key购买 nike

在 R 中,如何检查每行列表中的任何值(例如 2、3 或 4)是否出现在三列中的任何一列中,然后在第四列中更改该行?

假设我有一个 df:

 A B C D
1 1 1
2 1 1
3 1 1

我想写(没有for循环)如果第 n 行(A 列或 B 列或 C 列)== 2 或 3 或 4,则 D[1,]=1,否则 = 0

基本上按行检查我的数字是否出现在三个特定列中的任何一个中,如果是,则将第四列更新为 1(如果不是 0)。

谢谢

最佳答案

您可以使用应用:

vec <- 2:4
df1$D <- apply(df1,1, function(x) any(vec %in% x)) +0
# A B C D
# 1 1 1 1 0
# 2 2 1 1 1
# 3 3 1 1 1

或者 tidyverse 版本,可能更有效,因为 apply 涉及一些矩阵转换:

library(tidyverse)
df1 %>% mutate(D = pmap_int(.,~any(vec %in% .)))
# A B C D
# 1 1 1 1 0
# 2 2 1 1 1
# 3 3 1 1 1

数据

df1 <- data.frame(A = c(1, 2,3), 
B = c(1, 1, 1),
C = c(1, 1, 1))

关于r - 逐行检查列中是否存在值并逐行更新新列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53732332/

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