gpt4 book ai didi

r - 数据框条件多行

转载 作者:行者123 更新时间:2023-12-01 13:28:23 25 4
gpt4 key购买 nike

假设一个数据框如下:

data <- data.frame('obs' = c('a','c','b'), 'top1' = c('a','b','c'), 'top2' = c('b', 'c', 'f'), 'top3' = c('g', 'h', 'd'))

我想计算一个新列 topn,这是一个按以下方式工作的条件:如果 obs 的值在任何 top 列,那么 topn 应该等于 obs,否则 topn 可以赋任何值,比如 top1。当然我知道我可以用 orifelse 来做到这一点,但我正在寻找一种更短的方式来编写它,因为在我的表中我最多可以有 10 顶部 列。

 obs top1 top2 top3 topn
a a b g a
c b c h c
b c f d c

最佳答案

如果我们正在寻找矢量化方法,那么我们可以在逻辑矩阵上使用rowSums来查找是否有任何匹配项,然后使用ifelse 根据逻辑向量

获取列值
i1 <- data[-1] == data['obs'][col(data[-1])]
data$topn <- ifelse(rowSums(i1) != 0, as.character(data$obs), as.character(data$top1))
data$topn
#[1] "a" "c" "c"

关于r - 数据框条件多行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47298631/

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