Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/66.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_Aggregate_Mean - Fatal编程技术网

从r中的数据集计算多个平均值

从r中的数据集计算多个平均值,r,aggregate,mean,R,Aggregate,Mean,我的上一个问题被标记为重复,但尽管我认为它们相似,但我发现答案对我的数据集不起作用。像这样的问题没有一个选项适合我,我不知道我做错了什么!如果可能的话,我正在寻找一个非常清晰和简单的答案 我有一个名为rawdata的数据集,它在不同的时间点观察一种细菌在10种不同碳上生长的ODs,看起来像这样: Time Carbon1 Carbon2 Carbon3 0 0.1 0.3 0.1 0 0.2

我的上一个问题被标记为重复,但尽管我认为它们相似,但我发现答案对我的数据集不起作用。像这样的问题没有一个选项适合我,我不知道我做错了什么!如果可能的话,我正在寻找一个非常清晰和简单的答案

我有一个名为rawdata的数据集,它在不同的时间点观察一种细菌在10种不同碳上生长的ODs,看起来像这样:

Time    Carbon1      Carbon2     Carbon3 
 0        0.1          0.3         0.1
 0        0.2          0.4         0.1
 24       0.4          0.6         0.2   
 24       0.35         0.5         0.2 
 48       0.67         0.8         0.3
 48       0.7          0.8         0.4    
我想计算每个碳的每个时间点的平均值-例如,碳1在0小时、24小时和48小时等。到目前为止,我已经尝试了一些方法,但没有任何效果。根据我所读到的,创建一个包含所有方法的新数据框架是可行的,但我不知道如何做到这一点,或者有更简单的方法吗

我尝试了这个选项:

data2 <- setDT(rawdata)[, lapply(.SD, mean), by=.(Time), .SDcols=c("Carbon1","Carbon2")]

data2融化数据帧,然后在索引变量上取平均值:

> head(rawdata)
  Time Carbon1 Carbon2 Carbon3
1    0    0.10     0.3     0.1
2    0    0.20     0.4     0.1
3   24    0.40     0.6     0.2
4   24    0.35     0.5     0.2
5   48    0.67     0.8     0.3
6   48    0.70     0.8     0.4


> d = reshape2::melt(rawdata,id="Time")
> head(d)
  Time variable value
1    0  Carbon1  0.10
2    0  Carbon1  0.20
3   24  Carbon1  0.40
4   24  Carbon1  0.35
5   48  Carbon1  0.67
6   48  Carbon1  0.70


> tapply(d$value, list(d$Time, d$variable), mean)

   Carbon1 Carbon2 Carbon3
0    0.150    0.35    0.10
24   0.375    0.55    0.20
48   0.685    0.80    0.35

融化数据帧,然后在索引变量上使用平均值:

> head(rawdata)
  Time Carbon1 Carbon2 Carbon3
1    0    0.10     0.3     0.1
2    0    0.20     0.4     0.1
3   24    0.40     0.6     0.2
4   24    0.35     0.5     0.2
5   48    0.67     0.8     0.3
6   48    0.70     0.8     0.4


> d = reshape2::melt(rawdata,id="Time")
> head(d)
  Time variable value
1    0  Carbon1  0.10
2    0  Carbon1  0.20
3   24  Carbon1  0.40
4   24  Carbon1  0.35
5   48  Carbon1  0.67
6   48  Carbon1  0.70


> tapply(d$value, list(d$Time, d$variable), mean)

   Carbon1 Carbon2 Carbon3
0    0.150    0.35    0.10
24   0.375    0.55    0.20
48   0.685    0.80    0.35

这是什么编程语言?它应该有一个标签,以便问题出现在该语言的“未回答问题”列表中。它是r,我想我已经将它标记为您的
数据。表
解决方案适合我请提供
dput(head(rawdata))
。你有字符或因子列,看起来你有字符值而不是数字。检查您是如何获得数据的,并确保列的类型正确无误。经常使用
摘要(mydata)
。一旦你得到了正确的答案,你会发现如何总结一大堆已经存在的行和列。这是用什么编程语言?它应该有一个标签,以便问题出现在该语言的“未回答问题”列表中。它是r,我想我已经将它标记为您的
数据。表
解决方案适合我请提供
dput(head(rawdata))
。你有字符或因子列,看起来你有字符值而不是数字。检查您是如何获得数据的,并确保列的类型正确无误。经常使用
摘要(mydata)
。一旦你得到了正确答案,你会发现如何总结一大堆已经存在的行和列的答案。嗨,谢谢!我认为这应该是可行的,但当我进入tapply步骤时,我收到了40条警告消息:“在mean.default(X[[I]],…):参数不是数字或逻辑的:返回NA”。你知道是什么引起的吗?你的数据不是数字。这里有角色值。始终检查您的数据类型。嗨,谢谢!我认为这应该是可行的,但当我进入tapply步骤时,我收到了40条警告消息:“在mean.default(X[[I]],…):参数不是数字或逻辑的:返回NA”。你知道是什么引起的吗?你的数据不是数字。这里有角色值。始终检查您的数据类型。