标签: rowsum

从R中的行和中省略inf

所以我试图对矩阵的行求和,其中有inf.如何对行进行求和,省略inf?

r rowsum

20
推荐指数
4
解决办法
8432
查看次数

R编程 - 具有共同值的行的和元素

您好,并提前感谢您的帮助,

(请注意注释部分以获得更多见解:即下面示例中的成本列已添加到此问题中; Simon提供了一个很好的答案,但成本列本身未在他的数据响应中表示,尽管他提供的功能与成本列一起使用)

我有一个数据集,让我们称之为"数据",看起来像这样

NAME     DATE     COLOR   PAID    COST
Jim      1/1/2013 GREEN   150     100
Jim      1/2/2013 GREEN   50      25
Joe      1/1/2013 GREEN   200     150
Joe      1/2/2013 GREEN   25      10
Run Code Online (Sandbox Code Playgroud)

我想要做的是将具有相同NAME值的记录的PAID(和COST)元素相加,并将行数(如本示例中所示)减少为2,这样我的新数据框如下所示:

NAME     DATE     COLOR   PAID    COST
Jim      1/2/2013 GREEN   200     125
Joe      1/2/2013 GREEN   225     160
Run Code Online (Sandbox Code Playgroud)

就日期而言,我并不关心哪一个在求和过程中幸存下来.

我已经达到了rowSums(数据),但我不确定如何使用它.任何帮助将不胜感激.

aggregate r rowsum

14
推荐指数
1
解决办法
1万
查看次数

有效地计算R中3d数组的行和

考虑一下数组a:

> a <- array(c(1:9, 1:9), c(3,3,2))
> a
, , 1

     [,1] [,2] [,3]
[1,]    1    4    7
[2,]    2    5    8
[3,]    3    6    9

, , 2

     [,1] [,2] [,3]
[1,]    1    4    7
[2,]    2    5    8
[3,]    3    6    9
Run Code Online (Sandbox Code Playgroud)

我们如何有效地计算由第三维索引的矩阵的行和,使得结果为:

     [,1] [,2]
[1,]   12   12
[2,]   15   15
[3,]   18   18
Run Code Online (Sandbox Code Playgroud)

??

通过以下'dims'参数可以轻松实现列总和colSums():

> colSums(a, dims = 1)
Run Code Online (Sandbox Code Playgroud)

但我不能找到一种方法,使用rowSums()阵列上,以达到预期的效果,因为它有一个不同的解读'dims'到的colSums().

使用以下方法计算所需的行总和很简单:

> apply(a, …
Run Code Online (Sandbox Code Playgroud)

arrays r rowsum

12
推荐指数
2
解决办法
5000
查看次数

在索引上求和2D数组的值

我需要扩展这个问题,它根据第二个数组的索引对数组的值求和.让A是结果数组,B是索引数组,并且C要被总计在阵列.然后A[i] = sumC这样index(B) == i.

相反,我的设置是

N = 5
M = 2

A = np.zeros((M,N))
B = np.random.randint(M, size=N) # contains indices for A
C = np.random.rand(N,N)
Run Code Online (Sandbox Code Playgroud)

我需要 A[i,j] = sum_{k in 0...N} C[j,k]这样的C[k] == i,即以B匹配i的索引为条件的rowum.有没有一种有效的方法来做到这一点?对于我的应用程序,N大约为10,000,M大约为20.在最小化问题中每次迭代都会调用此操作...我当前的循环方法非常慢.

谢谢!

python indexing numpy rowsum

7
推荐指数
1
解决办法
784
查看次数

按组分组名称以模式开头的所有列

我是R的新手,我试图根据他们的名字按组加总.我有一个像这样的数据框:

DT <- data.frame(a011=c(0,10,20,0),a012=c(010,10,0,0),a013=c(10,30,0,10),
a021=c(10,20,20,10),a022=c(0,0,0,10),a023=c(20,0,0,0),a031=c(30,0,10,0),
a032=c(0,0,10,0),a033=c(20,0,0,0))
Run Code Online (Sandbox Code Playgroud)

我想获得以"a01"开头的所有列的总和,以"a02"开头的所有列以及以"a03"开头的所有列:

a01tot a02tot a03tot
    20     30     50
    50     20      0
    20     20     20
    10     20      0
Run Code Online (Sandbox Code Playgroud)

到目前为止我已经习惯了

DT$a01tot <- rowSums(DT[,grep("a01", names(DT))])
Run Code Online (Sandbox Code Playgroud)

等等,但我的真实数据框有更多的组,我想避免为每个组编写一行代码.我想知道是否可以在矢量或列表中包含"a01","a02","a03"......并且有一些内容可以添加"a01tot","a02tot","a03tot"......数据框自动.

我知道我的问题与这个问题非常相似:不同组列的R总和,以相似的字符串开头,但解决方案指出,

cbind(df, t(rowsum(t(df), sub("_.*", "_t", names(df)))))
Run Code Online (Sandbox Code Playgroud)

在我的情况下不起作用,因为没有要替换的公共元素(如"_")(我无法将变量的名称更改为a01_1,a02_2等).

在我的情况下,切换到"长"格式也不是一个可行的解决方案.

任何帮助将不胜感激.

r rowsum

7
推荐指数
1
解决办法
7321
查看次数

如何计算R中一行中特定值的出现次数

我有一个非常棘手的问题,我似乎无法解决.

我有一个大型数据集(23277行,151列).每列的值均为0:100(含),表示为世界事件分配的概率.

作为计算每个人得分的一部分,我需要计算数据集中每个值的出现次数.

我首先尝试申请,但我需要忽略NA和子集,所以当我尝试以下内容时:

apply(ans.samp, 1, sum(ans.samp[ans==0]), na.rm=TRUE)
Run Code Online (Sandbox Code Playgroud)

我收到了错误消息:sum(ans.samp [ans == 0])'不是函数,字符或符号

我用sapply,vapply,tapply和do.call重复这个过程无济于事.

放弃了矢量化解决方案,我写了以下for循环.

RespCount <- function (x) { for (i in (1:nrow(x))) 
  { res <- vector(mode="numeric", length=nrow(x))
    ans.tmp <- x[i,]
    res[i] <- length(ans.tmp[ans.tmp==0])
    print(res)
  }
return(res)
}
Run Code Online (Sandbox Code Playgroud)

然而,在我使用它之后,它只返回样本中O的总和.

我会感激一些帮助,因为我在一段时间的压力下,我希望将来能够在R中解决这些问题.

包含的样本数据用于再现性:

structure(list(X = 1:6, X100 = c(70L, NA, 80L, 0L, 40L, NA), 
    X10 = c(30L, NA, NA, NA, NA, NA), X1 = c(50L, NA, NA, NA, 
    NA, NA), X11 = c(50L, NA, NA, NA, NA, NA), X12 = c(30L, NA, …
Run Code Online (Sandbox Code Playgroud)

r function rowsum

6
推荐指数
1
解决办法
5510
查看次数

以类似字符串开头的不同列组的R总和

我对R很陌生,这是我第一次敢在这里问一个问题.

我正在使用具有Likert标度的数据集,并且我希望在不同的列组中对它们进行行和,这些列共享其名称中的第一个字符串.

下面我构建了一个只有2行的数据框来说明我遵循的方法,尽管我希望得到关于如何编写更有效的方法的反馈.

df <- as.data.frame(rbind(rep(sample(1:5),4),rep(sample(1:5),4)))

var.names <- c("emp_1","emp_2","emp_3","emp_4","sat_1","sat_2"
           ,"sat_3","res_1","res_2","res_3","res_4","com_1",
           "com_2","com_3","com_4","com_5","cap_1","cap_2",
           "cap_3","cap_4")

names(df) <- var.names
Run Code Online (Sandbox Code Playgroud)

所以,我所做的是使用grep函数,以便能够将以某些字符串开头的指定变量的行相加并将它们存储在一个新变量中.但我必须为每个变量编写一行新代码.

df$emp_t <- rowSums(df[, grep("\\bemp.", names(df))])
df$sat_t <- rowSums(df[, grep("\\bsat.", names(df))])
df$res_t <- rowSums(df[, grep("\\bres.", names(df))])
df$com_t <- rowSums(df[, grep("\\bcom.", names(df))])
df$cap_t <- rowSums(df[, grep("\\bcap.", names(df))])
Run Code Online (Sandbox Code Playgroud)

但是数据集中有很多变量,我想知道是否只有一行代码可以实现这一点.例如,某种方法将以相同字符串开头的变量分组在一起,然后应用行函数.

提前致谢!

r rowsum

6
推荐指数
1
解决办法
2089
查看次数

跨列的条件滚动总和

我有一个连续年份(列)的独特个体(行)的值数据框架。这里提供了一个虚拟数据示例:

dt = structure(list(ID = c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10), `2015` = c(0, 
0.8219178, 0, 0.1369863, 0, 1.369863, 0.2739726, 0.8219178, 5, 
0), `2016` = c(0, 1.369863, 0, 0.2739726, 0, 0.2739726, 0, 3.2876712, 
0, 0), `2017` = c(0.6849315, 0, 0, 0.6849315, 0, 0.5479452, 0, 
0, 0, 0), `2018` = c(1.0958904, 0.5479452, 1.9178082, 0, 0, 0, 
0, 0, 0, 3), `2019` = c(0, 0, 0, 1.0958904, 0, 0.9589041, 0.5479452, 
0, 0, 0), `2020` = c(0.4383562, 0, 0, …
Run Code Online (Sandbox Code Playgroud)

r lapply dataframe rowsum data.table

5
推荐指数
2
解决办法
165
查看次数

处理行操作中丢失的数据

ID <- 1:6
math <- c("YES","NO","YES","NO",NA,NA)
history <- c(NA,NA,"NO","NO","YES",NA)

dt <- data.frame(ID, math, history)

  ID math history
1  1  YES    <NA>
2  2   NO    <NA>
3  3  YES      NO
4  4   NO      NO
5  5 <NA>     YES
6  6 <NA>    <NA>
Run Code Online (Sandbox Code Playgroud)

我想添加一个附加列(“pass”),如下所示

  1. 如果学生至少说过一次“是”:“是”(无论其他科目是否缺少数据等等。)

  2. 如果学生没有回答“是”

    • 如果两个受试者都缺少数据:NA
    • 如果其中一个科目为“否”:“否”

所以,列会像这样:(我可以使用这个最小的示例手动执行此操作,但不能使用我的真实数据)

> dt
  ID math history pass
1  1  YES    <NA>  YES
2  2   NO    <NA>   NO
3  3  YES      NO  YES
4  4   NO      NO   NO
5  5 <NA>     YES  YES
6  6 …
Run Code Online (Sandbox Code Playgroud)

row r rowsum rowwise

5
推荐指数
1
解决办法
156
查看次数

计算总和列而忽略Na

我正在尝试创建一个总计列,以将前面各列的值相加。但是,如果有NA,我将遇到困难。如果该行中没有NA,则我的脚本将不会计算总和。

我如何编辑以下脚本以将NA实质上计数为0,或者完全忽略它们,但仍计算总和。我实际上不想将NA更改为0。

CTDB %>% mutate(SCARED_TOTAL_CHILD = CTDB %>% rowwise() %>% 
SELECT(SCARED_BREATHE_CHILD:SCARED_SHY_CHILD) %>% rowSums()) -> CTDB
Run Code Online (Sandbox Code Playgroud)

谢谢!!

r rowsum na

4
推荐指数
1
解决办法
3233
查看次数

标签 统计

rowsum ×10

r ×9

aggregate ×1

arrays ×1

data.table ×1

dataframe ×1

function ×1

indexing ×1

lapply ×1

na ×1

numpy ×1

python ×1

row ×1

rowwise ×1