r拆分应用合并问题
我是r新手,有一个大的data.frame(906行),我想在应用多个描述性统计(平均值、标准偏差、标准误差/方差、25%和75%置信区间、最小值、最大值和中位数)之前(行?)将data.frame按第一列(与相同名称相关的条目一起)拆分到其他列。与每个物种相关联的行数不同,因此是不均匀/不平衡的分割。在“par”列中分散了很多na(每行至少有一个列条目),但我只想忽略/跳过na,而不是删除/忽略该行r拆分应用合并问题,r,na,split-apply-combine,R,Na,Split Apply Combine,我是r新手,有一个大的data.frame(906行),我想在应用多个描述性统计(平均值、标准偏差、标准误差/方差、25%和75%置信区间、最小值、最大值和中位数)之前(行?)将data.frame按第一列(与相同名称相关的条目一起)拆分到其他列。与每个物种相关联的行数不同,因此是不均匀/不平衡的分割。在“par”列中分散了很多na(每行至少有一个列条目),但我只想忽略/跳过na,而不是删除/忽略该行 我希望我的最终输出显示:名称列、描述性统计列和描述性统计结果列(每个par一列)。到目前为止,
我希望我的最终输出显示:名称列、描述性统计列和描述性统计结果列(每个par一列)。到目前为止,我尝试过的一切都没有奏效。同样,也是非常新的r,我不确定我在做什么,请帮助。通常,通过查看r随附的内容,您可以为您的可复制示例找到合适的数据(
data()
将显示数据集列表和简要说明)。例如,iris
数据集与您的数据集类似,只是物种名称是最后一列:
data(iris)
iris <- iris[, c(5, 1:4)]
iris.splt <- split(iris[, 2:5], iris[, 1])
这将计算单个列的统计信息。我们需要使用lappy
函数对列表每个部分的每一列运行函数两次,然后第三次将这些列重新组合在一起:
iris.stats <- lapply(iris.splt, function(x) lapply(x, stats))
iris.dfs <- lapply(iris.stats, data.frame)
iris.dfs
# $setosa
# Sepal.Length Sepal.Width Petal.Length Petal.Width
# 0% 4.3000 2.3000 1.00000 0.10000
# 25% 4.8000 3.2000 1.40000 0.20000
# 50% 5.0000 3.4000 1.50000 0.20000
# 75% 5.2000 3.6750 1.57500 0.30000
# 100% 5.8000 4.4000 1.90000 0.60000
# mean 5.0060 3.4280 1.46200 0.24600
# sd 0.3525 0.3791 0.17366 0.10539
# var 0.1242 0.1437 0.03016 0.01111
#
# $versicolor
# Sepal.Length Sepal.Width Petal.Length Petal.Width
# 0% 4.9000 2.00000 3.0000 1.00000
# 25% 5.6000 2.52500 4.0000 1.20000
# 50% 5.9000 2.80000 4.3500 1.30000
# 75% 6.3000 3.00000 4.6000 1.50000
# 100% 7.0000 3.40000 5.1000 1.80000
# mean 5.9360 2.77000 4.2600 1.32600
# sd 0.5162 0.31380 0.4699 0.19775
# var 0.2664 0.09847 0.2208 0.03911
#
# $virginica
# Sepal.Length Sepal.Width Petal.Length Petal.Width
# 0% 4.9000 2.2000 4.5000 1.40000
# 25% 6.2250 2.8000 5.1000 1.80000
# 50% 6.5000 3.0000 5.5500 2.00000
# 75% 6.9000 3.1750 5.8750 2.30000
# 100% 7.9000 3.8000 6.9000 2.50000
# mean 6.5880 2.9740 5.5520 2.02600
# sd 0.6359 0.3225 0.5519 0.27465
# var 0.4043 0.1040 0.3046 0.07543
iris.stats欢迎来到SO(和R)。请你阅读并修改你的问题。包括一个最小的、可复制和粘贴的示例,根据示例和理想的编码尝试显示预期的输出。这将使其他人更容易帮助你。发布你的数据!不是指向数据图像的链接,而是将其作为文本发布在此处。
iris.stats <- lapply(iris.splt, function(x) lapply(x, stats))
iris.dfs <- lapply(iris.stats, data.frame)
iris.dfs
# $setosa
# Sepal.Length Sepal.Width Petal.Length Petal.Width
# 0% 4.3000 2.3000 1.00000 0.10000
# 25% 4.8000 3.2000 1.40000 0.20000
# 50% 5.0000 3.4000 1.50000 0.20000
# 75% 5.2000 3.6750 1.57500 0.30000
# 100% 5.8000 4.4000 1.90000 0.60000
# mean 5.0060 3.4280 1.46200 0.24600
# sd 0.3525 0.3791 0.17366 0.10539
# var 0.1242 0.1437 0.03016 0.01111
#
# $versicolor
# Sepal.Length Sepal.Width Petal.Length Petal.Width
# 0% 4.9000 2.00000 3.0000 1.00000
# 25% 5.6000 2.52500 4.0000 1.20000
# 50% 5.9000 2.80000 4.3500 1.30000
# 75% 6.3000 3.00000 4.6000 1.50000
# 100% 7.0000 3.40000 5.1000 1.80000
# mean 5.9360 2.77000 4.2600 1.32600
# sd 0.5162 0.31380 0.4699 0.19775
# var 0.2664 0.09847 0.2208 0.03911
#
# $virginica
# Sepal.Length Sepal.Width Petal.Length Petal.Width
# 0% 4.9000 2.2000 4.5000 1.40000
# 25% 6.2250 2.8000 5.1000 1.80000
# 50% 6.5000 3.0000 5.5500 2.00000
# 75% 6.9000 3.1750 5.8750 2.30000
# 100% 7.9000 3.8000 6.9000 2.50000
# mean 6.5880 2.9740 5.5520 2.02600
# sd 0.6359 0.3225 0.5519 0.27465
# var 0.4043 0.1040 0.3046 0.07543