在 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)。
Thanks,
你可以使用apply
:
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
Or a 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
data
df1 <- data.frame(A = c(1, 2,3),
B = c(1, 1, 1),
C = c(1, 1, 1))
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)