Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/EmptyTag/154.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R:列表中的求和频率_R_List_Dataframe_Frequency_Vegan - Fatal编程技术网

R:列表中的求和频率

R:列表中的求和频率,r,list,dataframe,frequency,vegan,R,List,Dataframe,Frequency,Vegan,编辑:使用的包装为:plyr和vegan。R是最新的版本 我的基本数据如下: X1 = c('Archea01', 'Bacteria01', 'Bacteria02') Sample1 = c(0.2,NA,NA) Sample2 = c(0, 0.001, NA) Sample3 = c(0.04, NA, NA) df = data.frame(X1,Sample1,Sample2,Sample3) df X1 Sample1 Sample2 Sample3 1

编辑:使用的包装为:
plyr
vegan
。R是最新的版本

我的基本数据如下:

X1 = c('Archea01', 'Bacteria01', 'Bacteria02') 
Sample1 = c(0.2,NA,NA) 
Sample2 = c(0, 0.001, NA) 
Sample3 = c(0.04, NA, NA)
df = data.frame(X1,Sample1,Sample2,Sample3)
df
          X1 Sample1 Sample2 Sample3
1   Archea01     0.2   0.000    0.04
2 Bacteria01      NA   0.001      NA
3 Bacteria02      NA      NA      NA
有目的地使用NAs生成数据,以反映真实数据

我的目标是总结每个样本中细菌/原型发生的频率,这将理想地创建这种类型的数据框架:

Sample1    Sample2    Sample3
23         11         12
        X1                                  Sample1
dfFreq list(x = 1:1885, freq = c(1, 1, 1)   list(x = c(1, 2, 3)
我已成功创建了一个频率列表:

dfFreq <- apply(df, 2, count)
这不是我想要的

关于如何A)求和频率,然后转换成我想要的数据帧,或者B)将列表转换成可以求和频率列的合理数据帧,有什么想法吗?我认为A是我能达到我想要的目的的唯一途径,但对此的任何想法都将不胜感激

编辑2.0: Ryan Morton提出了以下代码:

require(dplyr)
dfBound <- rbind(dfFreq)
虽然这似乎更接近解决方案,但我注意到每个列表要么遵循X1的格式,要么遵循Sample1的格式(x=c(1,2,3,等等),这表明绑定列表的过程中发生了错误

有没有关于为什么这可能不起作用的想法,以及对列表中的频率求和有什么解决方案

非常感谢。

更新 我想出了如何将我原来的频率表求和,并将其转换为我所希望的数据帧。感谢Ryan Morton为我指明了正确的方向并提供了代码

dfNARemoved <- lapply(dfFreq, function(x) transform(x[-nrow(x),]))#removing useless NAs in my data
dfFreqxRemoved <- lapply(dfNARemoved, function(x) { x["x"] <- NULL; x })     #removing useless x column
dfSum <- lapply(dfFreqxRemoved, function(x) sum(x))
require(dplyr)
#Now converting into a dataframe
dfBound <- rbind(dfSum)
dfData <- as.data.frame(dfBound)

dfNARemoved我不明白您提供的样本数据是如何产生您提到的频率的。请详细说明或提供匹配的数据/输出。此外,
count
不是一个基本的R函数。如果您使用任何包,请显式提及它们或添加它们的标记。I'd rbind()数据帧列表,然后对频率进行求和。使用dplyr的group_by函数应该可以工作:df%%>%group by(x)%%>%summarise(freq=sum(freq)。如果需要样本名称,则需要将样本名称添加到每个数据帧中(并通过函数将该变量添加到group_中)@lmo对此表示抱歉-我所做的编辑让它更清晰了吗?@RyanMorton非常感谢你。这看起来应该正是我要找的。我明天会试试看是否可行。@RyanMorton代码对我来说还不合适(见上面的编辑).知道为什么吗?我想知道NAs是否会影响命令。。。
require(dplyr)
dfBound <- rbind(dfFreq)
        X1                                  Sample1
dfFreq list(x = 1:1885, freq = c(1, 1, 1)   list(x = c(1, 2, 3)
dfNARemoved <- lapply(dfFreq, function(x) transform(x[-nrow(x),]))#removing useless NAs in my data
dfFreqxRemoved <- lapply(dfNARemoved, function(x) { x["x"] <- NULL; x })     #removing useless x column
dfSum <- lapply(dfFreqxRemoved, function(x) sum(x))
require(dplyr)
#Now converting into a dataframe
dfBound <- rbind(dfSum)
dfData <- as.data.frame(dfBound)