在R中运行COUNTIF以获取指定的列

时间:2018-04-24 10:19:04

标签: r countif

我需要创建一个'new'列并在指定的列(即'Output'列)上运行COUNTIF函数的等价物。例如,我需要计算这些列是否包含3或4。

右侧所需列的示例数据

x  Output.1  Output.2  Output.3  Output.4  Output.5  y  new
1  3         3         NA        NA        NA        2  2
1  4         4         3         3         NA        2  4
1  3         3         3         3         3         2  5
1  2         2         4         4         4         2  3

我尝试过使用rowSums(经过一些搜索后),例如:

df$new <- rowSums(df[c('Output.1', 'Output.2', 'Output.3', 'Output.4', 'Output.5')] == 3)

并使用grep隔离列

df[, new:= rowSums(.SD, na.rm = TRUE), .SDcols = grep("Output.", names(df))]

虽然后者对值进行求和 - 我需要对实例进行计数,但我无法弄清楚如何在那里使用== 3的条件。

提前致谢

1 个答案:

答案 0 :(得分:1)

您可以使用apply

df$new <- apply(df[, grep("Output.", names(df))], MARGIN = 1, 
                function(x) sum(x %in% c(3, 4), na.rm = T))

df 
#   x Output.1 Output.2 Output.3 Output.4 Output.5 y new
# 1 1        3        3       NA       NA       NA 2   2
# 2 1        4        4        3        3       NA 2   4
# 3 1        3        3        3        3        3 2   5
# 4 1        2        2        4        4        4 2   3