找回密码
 立即注册
查看: 4371|回复: 5

R中,当某一列相同时,相同的行数据相加

[复制链接]
发表于 2016-11-8 13:53:50 | 显示全部楼层 |阅读模式
我有一个如下的数据集,我想在第二列的多肽序列相同时,把相同的行的数据相加。
                                              Nuc      Pep z0-1 z0-2 z0-3 z0-4 x0-1 x0-2 x0-4 n0-1 n0-2 n0-3 n0-4 Amp1 Amp2 Amp3
2                                            total    x1000 1133  797  849  556  951  757  657  678  801  826  466 1309  118  758
3  AGTCCGCCGCCGCCGGGAGGAGGA SPPPPGGG 1268 1035 1016  744  682  647  439  703  665  806  420 1514  436 1533
4  AGTCCGCCGCCGCCTGGAGGAGGA SPPPPGGG 1183  762  818  593  797  659  546  758  879  884  547 1882  502 1894
5  AGTCCGCCTCCGCCGGGAGGAGGA SPPPPGGG 1081  801  809  605  218  201  140  106  140  166   79  339   44  194
6 AGTGCGCCGCCGCCGGGAGGAGGA SAPPPGGG  231  122  174  126  205  196  138  186  189  251  148  417  108  402
7 AGTCCGCCTGCGCCTGGAGGAGGA SPPAPGGG  285  157  159  111  143  131  116  172  234  286  150  523   70  375


并把数据集变成
              Pep    z0-1  z0-2  z0-3 z0-4 x0-1 x0-2 x0-4 n0-1 n0-2 n0-3 n0-4  Amp1 Amp2 Amp3
2         x1000   1133  797   849  556  951  757  657  678  801   826  466   1309  118    758
3      SPPPPGGG 3532        2598        2643        1942        1697        1507        1125        1567        1684        1856        1046        3735        982 3621
4      SAPPPGGG  231  122   174   126   205  196   138   186   189   251  148   417  108  402
5      SPPAPGGG  285  157   159    111  143  131   116   172   234   286  150    523   70  375
               

无标题.png
回复

使用道具 举报

发表于 2016-11-8 16:19:21 | 显示全部楼层
试试aggregate命令 整合数据
subdata=aggregate(data,by=list(prep),FUN=sum,na.rm=TRUE)
回复

使用道具 举报

 楼主| 发表于 2016-11-9 10:51:00 | 显示全部楼层
我先把数据整合成如下这样:             Pep z0-1 z0-2 z0-3 z0-4 x0-1 x0-2 x0-4 n0-1 n0-2 n0-3 n0-4 Amp1 Amp2 Amp32     x1000 1133  797  849  556  951  757  657  678  801  826  466 1309  118  758
3  SPPPPGGG 1268 1035 1016  744  682  647  439  703  665  806  420 1514  436 1533
4  SPPPPGGG 1183  762  818  593  797  659  546  758  879  884  547 1882  502 1894
5  SPPPPGGG 1081  801  809  605  218  201  140  106  140  166   79  339   44  194
6  SPPPPGGG 1049  801  806  566  183  201  133  160  172  197  111  451  124  339
7  SPPAAGGG  843  674  689  477  190  195   91  140  145  158  111  415   84  248
8  SPPAAGGG  782  604  591  445  175  206  133  158  154  165   93  508   94  352
9  SPPPPGGG  646  502  558  353   61  102   52   46   34   61   30  133   50  115
10 SPPCCGGG  499  401  433  280  158  178  101   94  102  130   77  418  111  238
11 SPPCCGGG  584  442  414  288   41   82   31   33   39   33   16  113   30   55
然后按您说的去处理

subdata=aggregate(pep.dat[,-1],by=list(pep.dat$Pep),FUN=sum, na.rm=TRUE)

然后报错,“Error in FUN(X[[i]], ...) : 'type'(character)参数不对”。
请您再指点一下,谢谢。



回复

使用道具 举报

发表于 2016-11-10 09:53:38 | 显示全部楼层
本帖最后由 doby 于 2016-11-10 09:57 编辑

我这里没有问题啊 不知道你怎么弄得 我估计你是少了这句header = TRUE,把文件头当数据了
data=read.table("D:/r/pp.txt",header = TRUE)
names(data)
str(data)
data$Pep
subdata=aggregate(data[,-1],by=list(data$Pep),FUN=sum, na.rm=TRUE)


无标题.png
回复

使用道具 举报

 楼主| 发表于 2016-11-11 00:14:09 | 显示全部楼层
我没有把头文件当数据,我用一小部分数据测试也是可以的。有可能我全部的数据里有字符。我再好好检查一下,谢谢啦!
回复

使用道具 举报

 楼主| 发表于 2016-11-11 04:56:34 | 显示全部楼层
非常感谢!我找到问题所在了,读测试文件的时候,读进去的数字都是数字类型。但读全部文件的时候,读进去的数字都是字符类型。我已经解决了,谢谢!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|R语言中文网

GMT+8, 2024-11-23 06:48 , Processed in 0.025013 second(s), 20 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表