R:通过循环求和列的值

贾斯珀·邦斯霍滕

我真的是R和这个论坛的新手,并且需要构建循环的帮助。(我是一名生物学专业的学生,​​几乎没有编程经验)。

我的数据框具有以下(简化的)结构:

    a = "TNS"
    b = NA
    c = NA
    d = 21
    e = 37
    f = 1
    g = 39
    h = 29
    df = data.frame (a,b,c,d,e,f,g,h)

实际上,我的数据框由210行和90列组成,但是我现在对那些其他行并不真正感兴趣。我正在寻找的一种方法是对除前三个之外的每个其他列的值求和,并将这些结果作为新列自动添加到我的数据帧的末尾。这将优先产生一个data.frame,如下所示:

    a = "TNS"
    b = NA
    c = NA
    d = 21
    e = 37
    f = 1
    g = 39
    h = 29
    de = 58
    df = 22
    dg = 60
    dh = 50
    ef = 38
    eg = 76
    eh = 66
    fg = 40
    fh = 30
    gh = 68
    df = data.frame (a,b,c,d,e,f,g,h,de,df,dg,dh,ef,eg,eh,fg,fh,gh)

每个列不能多次配对。为每个配对运行循环后,我需要对每个三元组列,四重奏列等进行处理。

我为什么要这样做?对于一个生物多样性研究项目,我需要为85列进行此操作,而要手工计算每种组合的价值将花费太多时间。

任何帮助将不胜感激,因为我真的没有R的经验,无法自己提出解决方案!!!

A5C1D2H2I1M1N2O1R2T1

您可以将combn与结合使用rowSums,如下所示:

## This creates the names for the new columns we'll be creating
nam <- combn(names(df)[-c(1, 2, 3)], 2, FUN = function(x) paste(x, collapse = ""))

## Create and assign to your original data.frame
df[nam] <- combn(names(df)[-c(1, 2, 3)], 2, 
                 FUN = function(x) rowSums(df[x], na.rm = TRUE), simplify = FALSE)
df
#      a  b  c  d  e  f g h de df dg dh ef eg eh fg fh gh
# 1  TNS NA NA  3  3 10 5 9  6 13  8 12 13  8 12 15 19 14
# 2  TNS NA NA  4  2  3 6 7  6  7 10 11  5  8  9  9 10 13
# 3  TNS NA NA  6  7  7 5 8 13 13 11 14 14 12 15 12 15 13
# 4  TNS NA NA 10  4  2 2 6 14 12 12 16  6  6 10  4  8  8
# 5  TNS NA NA  3  8  3 9 6 11  6 12  9 11 17 14 12  9 15
# 6  TNS NA NA  9  5  4 7 8 14 13 16 17  9 12 13 11 12 15
# 7  TNS NA NA 10  8  1 8 1 18 11 18 11  9 16  9  9  2  9
# 8  TNS NA NA  7 10  4 2 5 17 11  9 12 14 12 15  6  9  7
# 9  TNS NA NA  7  4  9 8 8 11 16 15 15 13 12 12 17 17 16
# 10 TNS NA NA  1  8  4 5 7  9  5  6  8 12 13 15  9 11 12

这是用于此答案的样本数据:

set.seed(1)
df <- data.frame(a = "TNS", b = NA, c = NA, 
           matrix(sample(10, 50, TRUE), ncol = 5, 
                  dimnames = list(NULL, c("d", "e", "f", "g", "h"))))
df
#      a  b  c  d  e  f g h
# 1  TNS NA NA  3  3 10 5 9
# 2  TNS NA NA  4  2  3 6 7
# 3  TNS NA NA  6  7  7 5 8
# 4  TNS NA NA 10  4  2 2 6
# 5  TNS NA NA  3  8  3 9 6
# 6  TNS NA NA  9  5  4 7 8
# 7  TNS NA NA 10  8  1 8 1
# 8  TNS NA NA  7 10  4 2 5
# 9  TNS NA NA  7  4  9 8 8
# 10 TNS NA NA  1  8  4 5 7

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

R - 通过列差异循环

来自分类Dev

SAS:将行从 1 循环求和到列指定的值

来自分类Dev

如何使R for循环求和?

来自分类Dev

-SQL-通过其他列值求和

来自分类Dev

如何通过id选择具有外部值的列求和

来自分类Dev

通过使用 R 组合所有变量来求和值

来自分类Dev

在循环 VBA 中求和值

来自分类Dev

循环不能正确求和值

来自分类Dev

使用循环对特定列求和

来自分类Dev

在R中sum <1000时从列中的值中求和

来自分类Dev

R中两个不同列的值求和

来自分类Dev

R:滚动计算列值(避免循环)

来自分类Dev

根据其他两个列值对行进行计数,并在R中通过这些列值之一循环操作该值

来自分类Dev

C ++ For循环。诠释 值未正确求和

来自分类Dev

如何用循环对php中的值求和

来自分类Dev

在 for 循环中求和值时获取 NaN

来自分类Dev

如何对几行的列值求和?

来自分类Dev

如何创建列并通过for循环更改其值?

来自分类Dev

VBA宏通过行中的列循环并比较值

来自分类Dev

通过循环从数据框列获得唯一值

来自分类Dev

如何通过文件列值循环执行命令?

来自分类Dev

如何通过对列值和自增值求和来创建PK

来自分类Dev

如何通过对值求和来组合 numpy 中矩阵的两列/行?

来自分类Dev

通过求和r将多列合并到数据帧中的一列

来自分类Dev

通过基于多个条件求和特定列以在R中创建新列

来自分类Dev

通过R中的for循环内的if函数设置某些行的值

来自分类Dev

R:通过循环将值添加到向量

来自分类Dev

通过生成 MipMap 对 Webgl2 R32F 纹理中的值求和

来自分类Dev

在R中使用带有mutate的循环对具有部分匹配的列名称的列求和

Related 相关文章

热门标签

归档