【问题标题】:Sum row values of a data frame using R - where each value in the row is evaluated against a condition使用 R 对数据框的行值求和 - 其中行中的每个值都根据条件进行评估
【发布时间】:2017-07-29 12:46:48
【问题描述】:

我有一个包含 20,000 个观察值和 171 个变量的数据框。每行中的每个值都是 +1、0 或 -1。

我希望能够对每行中 1 的数量求和(或计数)并将该数字变为 172。

我对此进行了研究,但找不到解决方案。

rowsum() 不适合,因为我不能像 rowsum(df , =1) 那样使其有条件

apply 也是如此。例如,以下代码将不起作用:

apply(df, 1, sum(=1) ).

有没有办法计算一行的条件总和,其中只有那些符合条件的行中的值才会被求和。

【问题讨论】:

  • rowSums(df == 1)

标签: r row


【解决方案1】:

最好能提供人们可以使用的数据。例如:

library(dplyr)

df <- data_frame(col1 = sample(c(-1, 0, 1), 10, replace = TRUE),
                 col2 = sample(c(-1, 0, 1), 10, replace = TRUE),
                 col3 = sample(c(-1, 0, 1), 10, replace = TRUE),
                 col4 = sample(c(-1, 0, 1), 10, replace = TRUE))

就我而言,这给了我们:

   col1 col2 col3 col4
1     1    1    0    0
2    -1    0   -1   -1
3     0   -1    1    0
4    -1   -1    0   -1
5    -1    1    1    1
6     0    0    0    1
7    -1   -1   -1    1
8     1   -1    1   -1
9     0   -1   -1    1
10    0    1    1   -1

现在您可以像这样轻松实现您想要的:

(df <- df %>% mutate(sums = rowSums(df == 1)))

   col1 col2 col3 col4 sums
1     1    1    0    0    2
2    -1    0   -1   -1    0
3     0   -1    1    0    1
4    -1   -1    0   -1    0
5    -1    1    1    1    3
6     0    0    0    1    1
7    -1   -1   -1    1    1
8     1   -1    1   -1    2
9     0   -1   -1    1    1
10    0    1    1   -1    2

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-01-26
    • 1970-01-01
    • 2023-01-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-24
    • 1970-01-01
    相关资源
    最近更新 更多