【问题标题】:countif like excel function in rcountif 像 r 中的 excel 函数
【发布时间】:2022-01-15 02:26:24
【问题描述】:

我想使用像 excel 这样的逐行范围来填充单元格中每个条件的计数。我需要为 100 个文件做这件事。所以,我想用 R 快速完成它。 我有一个表,我想在其中插入一个新列,其中包含同一行中 col1 中的数字计数。

    col1 col5 col7 col8 col9 col10 col11 col12
1    0    A    0    0    0     0     0     0
2    1    A    1    1    1     1     1     1
3    1    A    1    1    2     1     1     1
4    2    A    2    2    2     2     2     2
5    0    A    0    0    0     0     0     0
6    0    A    0    1    0     0     0     0

类似这样的:

    col1 counts col5 col7 col8 col9 col10 col11 col12
1    0      6    A    0    0    0     0     0     0
2    1      6    A    1    1    1     1     1     1
3    1      5    A    1    1    2     1     1     1
4    2      6    A    2    2    2     2     2     2
5    0      6    A    0    0    0     0     0     0
6    0      5    A    0    1    0     0     0     0

Excel代码是这样的

=COUNTIF(D2:I2,A2)

访问数据

dput(all)
structure(list(col1 = c(0L, 1L, 1L, 2L, 0L, 0L), col5 = c("A", 
"A", "A", "A", "A", "A"), col7 = c(0L, 1L, 1L, 2L, 0L, 0L), col8 = c(0L, 
1L, 1L, 2L, 0L, 1L), col9 = c(0L, 1L, 2L, 2L, 0L, 0L), col10 = c(0L, 
1L, 1L, 2L, 0L, 0L), col11 = c(0L, 1L, 1L, 2L, 0L, 0L), col12 = c(0L, 
1L, 1L, 2L, 0L, 0L)), class = "data.frame", row.names = c(NA, 
-6L))

我希望,通过 r 是可能的。

谢谢,

【问题讨论】:

标签: r excel


【解决方案1】:

注意:all() 也是一个基本 r 函数...因此将对象命名为 all 可能不是最好的选择

library(data.table)
setDT(all)[, counts := rowSums(.SD == all$col1), .SDcols = names(all)[-c(1:2)]][]
#    col1 col5 col7 col8 col9 col10 col11 col12 counts
# 1:    0    A    0    0    0     0     0     0      6
# 2:    1    A    1    1    1     1     1     1      6
# 3:    1    A    1    1    2     1     1     1      5
# 4:    2    A    2    2    2     2     2     2      6
# 5:    0    A    0    0    0     0     0     0      6
# 6:    0    A    0    1    0     0     0     0      5

【讨论】:

    【解决方案2】:

    你可以使用rowSums()

    df$counts <- rowSums(df[,paste0("col", 7:12)] == df$col1)
    df$counts
    #> [1] 6 6 5 6 6 5
    

    【讨论】:

    • 但是“col”只是特定于这个文件,大多数情况下,我在非常大的文件中有各种各样的 col.names,那么它最终会出错。谢谢,
    • 那么我会让您的示例更具体地说明您将如何选择列。如果您可以使用@Wimpel 的答案中的位置,那么就在我的中做同样的事情。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-07
    • 2021-02-02
    • 1970-01-01
    • 2019-07-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多