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