如何使用R测试data.table中的一些列的特定值?

这是我的样本数据

test <- data.table(name  = c("mike", "kate", "jeff"), ownership = c("1", "3", "4"), worth = c("1", "2", "3"), tax = c("4", "1", "4"))  

我试图测试是否有任何行(人)包含包含 “1 “的行。

我可以这样做

test <- test[ownership == "1" | worth == "1" | tax == "1", status := "yes"]

但我想让它更简洁一些。 比如说:

test <- test[any(c("ownership", "worth", "tax") %in% "1"), status := "yes"]

解决方案:

您可以使用 rowSums :

cols <- c('ownership', 'worth', 'tax')
setDT(test)[rowSums(test[, ..cols] == 1) > 0, yes := 'yes']
test

#   name ownership worth tax  yes
#1: mike         1     1   4  yes
#2: kate         3     2   1  yes
#3: jeff         4     3   4 <NA>

@chinsoon12建议的另一个方案

setDT(test)[test[, .I[rowSums(.SD==1L)], .SDcols=cols], status := "yes"] 

给TA打赏
共{{data.count}}人
人已打赏
未分类

将相同的数据分组到一个单一的字典中,同时进行刮擦。

2022-9-8 15:57:22

未分类

如何将两张表合并到一个DB模式中?

2022-9-8 15:57:24

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索